翻译外连接SQL查询到EJB实体bean
题
我是新来的EJB,并试图让我的头左右平移SQL概念EJB实体bean。
假设我有两个表:人(ID,姓名),CONTACT(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实体bean。所以,我创建了相应的EJB3实体bean类为我的表。
所以我现在都可以访问两个实体类从我的会话bean,我不再希望直接从我的会话bean访问我的数据库表通过SQL / JDBC。我只是想用我的实体bean和JPA的能力。什么是正确的EJB设计让我的会话bean,我得到了相同的结果,我的SQL查询?
我不清楚如何使用EJB实体bean类产生相同的结果我的SQL外连接查询。帮助
解决方案
首先,创建两个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
}
然后,以产生OUTER使用JPQL JOIN查询:
SELECT p FROM People p LEFT JOIN p.contact c
不隶属于 StackOverflow