2014-06-09 124 views
3

我想爲使用Hibernate的用戶讀取幾個元素。休眠manyToMany只返回一個元素

這是我的數據庫中的表: enter image description here 這是我的用戶類的代碼:

@Entity 
@Table(name="users") 
public class User 
{ 
@Id 
@GeneratedValue 
@Column(name="user_id") 
private int id; 

@ManyToMany(fetch=FetchType.EAGER, cascade = CascadeType.ALL) 
@JoinTable(name="mapping", 
    [email protected](name="user_id"), 
    [email protected](name="element_id") 
) 
private Set<Element> elements; 

這是一個單向的映射。所以在我的元素類中沒有「用戶」字段。

如果我嘗試讀取用戶,我只會得到映射的第一個元素。插入和更新工作正常。

任何想法??謝謝!

+1

'elements' 1的大小,還是您得到正確的大小但是重複了相同的對象? –

+0

@Ean:集合的大小是1.另外,如果我嘗試像列表一樣的不同集合。 –

回答

0

哦,地獄我真的很愚蠢! 在我用來加載我的實體道,我有以下限制:

criteria.setMaxResults(1); 

我想加載只有一個實體從數據庫中。 我不知道休眠是如何工作的。 現在,我想通了,這個限制導致hibernate只能得到連接表中的一行。所以我在我的實體列表中只有一個元素。

刪除此單行解決了我的問題!現在,dao的查詢返回多個相同對象的列表。我只需要選擇第一個。