Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 条件多次返回同一对象_Hibernate_Criteria - Fatal编程技术网

Hibernate 条件多次返回同一对象

Hibernate 条件多次返回同一对象,hibernate,criteria,Hibernate,Criteria,我有3张具有多对多关系的表。User、Compurets和第三个表是连接其他表的User_Comp。一个用户可以通过id将多台计算机分配给他。所以在那个里的表中有几个用户实体 这是我的桌子: 对于获取所有用户,此方法提供正确的数据 public List<User> getAllUsers() { Session session = HibernateUtil.openSession(); return session.createQuery("fr

我有3张具有多对多关系的表。User、Compurets和第三个表是连接其他表的User_Comp。一个用户可以通过id将多台计算机分配给他。所以在那个里的表中有几个用户实体

这是我的桌子:

对于获取所有用户,此方法提供正确的数据

public List<User> getAllUsers() {
        Session session = HibernateUtil.openSession();
        return session.createQuery("from User").list();
}

问题:为了从表用户获取数据或为每个用户获取唯一的记录,我必须做什么?

我猜User>computer关系没有设置为lazy,因此它在外部联接中加载所有计算机,以从用户填充getComputers

你可以用

 criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
仅通过每个实体迭代一次

User {Id= '1', login= 'user1', password= '1', name= 'userOne'…
User {Id= '2', login= 'user2', password= '2', name= 'userTwo'…
User {Id= '3', login= 'user3', password= '3', name= 'userThree'…
User {Id= '3', login= 'user3', password= '3', name= 'userThree'…
User {Id= '3', login= 'user3', password= '3', name= 'userThree'…
User {Id= '3', login= 'user3', password= '3', name= 'userThree'…
User {Id= '4', login= 'user4', password= '4', name= 'userFour'…
User {Id= '5', login= 'user5', password= '5', name= 'userFive'…
 criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);