외부 조인 SQL 쿼리를 EJB 엔티티 콩으로 변환합니다
문제
나는 EJB를 처음 접했고 SQL 개념을 EJB Entity Beans로 번역하는 데 주위를 두려고 노력하고 있습니다.
사람 (ID, 이름), 연락처 (PID, Phone_number)라는 두 개의 테이블이 있다고 가정합니다. 전화 번호가 있는지 여부에 관계없이 모든 사람의 목록을 얻으려면 EJB 세션 Bean에서 다음과 같은 JDBC를 통해 SQL 쿼리를 발행합니다.
SELECT PEOPLE.name, CONTACT.phone_number
FROM PEOPLE
LEFT JOIN CONTACT ON PEOPLE.id = CONTACT.pid
SQL/JDBC를 사용하는 대신 이제 EJB Entity Bean을 사용하고 싶습니다. 그래서 테이블에 해당하는 EJB3 엔티티 Bean 클래스를 만듭니다.
이제 세션 Bean의 두 엔티티 클래스에 액세스 할 수 있으며 더 이상 세션 Bean에서 SQL/JDBC를 통해 데이터베이스 테이블에 직접 액세스하고 싶지 않습니다. JPA의 엔티티 콩과 기능 만 사용하고 싶습니다. 세션 Bean에서 SQL 쿼리와 동일한 결과를 얻을 수 있도록 적절한 EJB 디자인은 무엇입니까?
EJB Entity Bean 클래스를 사용하여 SQL OUTER 조인 쿼리와 동일한 결과를 생성하는 방법에 대해 불분명합니다. 돕다.
해결책
먼저 두 개의 JPA 엔티티를 만듭니다. People
:
@Entity
@Table( name="PEOPLE" )
public class People {
@Id @Column
private Long id;
@Column
private String name;
@OneToOne
@JoinColumn( name="pid" )
private Contact contact;
// getters and setters
}
그리고 Contact
:
@Entity
@Table( name="CONTACT" )
public class Contact {
@Id @Column
private Long pid;
@Column
private String phoneNumber;
// getters and setters
}
그런 다음 JPQL을 사용하여 외부 조인 쿼리를 생성합니다.
SELECT p FROM People p LEFT JOIN p.contact c
제휴하지 않습니다 StackOverflow