2012-03-02 3 views
1

2 개 이상의 테이블에서 데이터를 검색 할 엔터티를 만들 수 있습니까?두 테이블의 데이터가있는 엔터티

나는 테이블을 가지고 싶다 :와

 
user: id, name, password 
user_address: idUser, street, city 

그리고 UserEntity을 :

int: id 
String: name, password, street, city 

하나의 테이블을 사용하여, 나는 가지고있다 :

UserEntity :

@Entity 
public class UserEntity { 
    @Id 
    @GeneratedValue 
    @Column(name = "id") 
    private int id; 

    @Column(name = "user") 
    private String user; 

    @Column(name = "password") 
    private String password; 

    //+ getter + setters 
} 

및 DB에서 코드를 사용하여 사용자로드하기 :

String queryString = "FROM UserEntity WHERE user = :user AND password = :password"; 
Query query = session.createQuery(queryString); 
query.setString("user", userForm.getUser()); 
query.setString("password", userForm.getPassword()); 
UserEntity userEntity = (UserEntity) query.uniqueResult(); 
+0

모든 테이블을 하나의 테이블에 저장하는 대신 그 이유는 무엇입니까? –

+0

답변 해 주셔서 감사합니다. 그것은 - 모든 사용자가 주소를 가지고 있지 않기 때문입니다. 그래서 두 가지 테이블에 보관하는 것이 좋습니다. – Dan

+0

그렇다면 사용자가 다른 주소 엔터티와 OneToOne 연결을 가지고 있으면 안됩니까? 사용자 엔터티에 직접 주소의 모든 필드를 저장하면 자연 매핑은 필드를 사용자 테이블에 저장하는 것입니다. –

답변

1

예. 그러나 각 테이블에 대해 하나의 Java 클래스를 제안합니다. UserAddress을 입력 한 다음 조인 @JoinColumn 주석을 사용하여 테이블이 조인되는 열을 지정하려고합니다.

두 개의 별도 클래스가 필요하지 않은 경우 ResultTransformer를 사용할 수 있습니다.

관련 문제