Hibernate manyToMany只返回一个元素

时间:2014-06-09 13:08:40

标签: java hibernate many-to-many

我想为使用Hibernate的用户阅读几个元素。

这些是我在数据库中的表格: 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",
    joinColumns=@JoinColumn(name="user_id"),
    inverseJoinColumns=@JoinColumn(name="element_id")
)
private Set<Element> elements;

这是一个单向映射。所以我的元素类中没有'users'-field。

如果我尝试读取用户,我只会获得映射的第一个元素。插入和更新工作正常。

任何想法?谢谢!

1 个答案:

答案 0 :(得分:2)

哦,天哪我真傻! 在我用来加载我的实体的dao中,我有以下限制:

criteria.setMaxResults(1);

我只想从数据库中加载一个实体。 我不知道hibernate是如何工作的。 现在,我想通了,这个限制导致hibernate只获得连接表的一行。所以我的实体列表中只有一个元素。

删除此单行修复了我的问题!现在,dao的查询返回多个相同对象的列表。我只需要选择第一个。