2014-09-10 3 views
1

다 대다 관계가있는 3 개의 테이블이 있습니다. User, Compurets이고 세 번째 테이블은 다른 사용자를 연결하는 User_Comp입니다. 한 명의 사용자는 id을 통해 여러 컴퓨터를 할당받을 수 있습니다. 그래서 거기에 테이블에 사용자의 여러 엔티티가 있습니다. 이 방법은 정확한 데이터를 제공하는 모든 사용자를 얻기 위해기준은 동일한 객체를 여러 번 반환합니다.

enter image description here

:

여기 내 테이블입니다.

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

하지만 같은 기준과 방법을 사용하는 경우 : 그림을 그림과 같이 여러 개의 같은 레코드를 반환

public List<User> getAllUsers() { 
    return currentSession().createCriteria(User.class).list(); 

.

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'… 

질문 : 나는 반복자가 돌려 있기 때문에, 테이블 User_Comp을 사용 이해할 수로서 나는 테이블 사용자로부터 데이터를 얻거나 각 사용자에 대해 고유 한 기록을 얻기 위해 무엇을해야?

답변

3

나는

가 만에

criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); 

를 사용할 수있는 사용자> 컴퓨터 관계가 그것이 외부에있는 모든 컴퓨터를로드 할 수 있도록 게으른 설정되지 않은 추측 사용자로부터 getComputers을 채우는 가입 각 실을 한 번 반복 함

+0

예. 그것은 작동합니다. 고마워요! – Devour