2014-02-19 59 views
1

UPDATE:我看到了數據庫關係,並且我意識到Module表有兩個對Unit Table(nid,unnr)的引用,但Unit Table沒有引用Module Table,它只能使用nid對子表進行子框架化。映射@ManyToMany與休眠標註的關係

+0

您是否試圖直接在數據庫上運行生成查詢,看看它是否返回任何值?你在這些表中有數據嗎? – Jay

+0

是的,我有9排。 – Murilo

+0

但我認爲我的映射不正確。所以它給我一個空的列表。 – Murilo

回答

1

首先,所有的代碼,目前呈現出的混合了一些東西......

你定義一個@JoinTable註解,這意味着你有3個表,1單元,1單元和一個與身份證的兩個實體在它...

第二個評論我已經是你談論一個模塊和單位之間的一對曼尼關係,但在你的示例代碼中,你把一個多對多的,很多...

如果我按照你的描述,我會在代碼中這樣構建它:

@Entity 
@Table(name = "unit") 
public class Unit { 
@Column(name = "nid") 
private int nid; 
@Id 
@GeneratedValue 
@Column(name = "unnr") 
private int unnr; 
@Column(name = "unhwtype") 
private int unhwtype; 
@Column(name = "unslot") 
private int unslot; 
@ManyToOne(cascade = CascadeType.ALL) 
@JoinColumn(name = "nid") 
private Module module; 

@Entity 
@Table(name = "module") 
public class Module { 
@Column(name = "nid") 
private int nid; 
@Id 
@Column(name = "mpos") 
private int mpos; 
@Column(name = "mhwtype") 
private int mhwtype; 
@OneToMany(mappedBy = "module", cascade = {CascadeType.ALL}) 
private Set units; 

問題她是我不確定這是否會起作用,因爲nid不是模塊實體中的ID列,我認爲您需要更改您的設計,以便nid是Id列...你可以嘗試這個代碼,並希望它的工作原理,否則將模塊實體中的ID改爲ID ..

+0

Yoeri,我改變了你的代碼。但名單仍然是空的。我會嘗試將de nid作爲ID,但是如果我這樣做,我會保留mpos的Id註釋,或者將其刪除並僅放入nid的Id註釋? – Murilo

+0

嗨Murilo,我假設Hibernate不能在同一個實體上使用2個@Id註解,所以我建議只把ID放在Nid上並從Mpos中移除它。 –