我想为使用Hibernate的用户阅读几个元素。
这些是我在数据库中的表格: 这是我的用户类的代码:
@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。
如果我尝试读取用户,我只会获得映射的第一个元素。插入和更新工作正常。
任何想法?谢谢!
答案 0 :(得分:2)
哦,天哪我真傻! 在我用来加载我的实体的dao中,我有以下限制:
criteria.setMaxResults(1);
我只想从数据库中加载一个实体。 我不知道hibernate是如何工作的。 现在,我想通了,这个限制导致hibernate只获得连接表的一行。所以我的实体列表中只有一个元素。
删除此单行修复了我的问题!现在,dao的查询返回多个相同对象的列表。我只需要选择第一个。