1

我是 EJB 的新手,并试图将 SQL 概念转换为 EJB 实体 bean。

假设我有两个表:PEOPLE (id, name), CONTACT(pid, phone_number)。如果我想获取所有人的列表,无论他们是否有电话号码,在我的 EJB 会话 bean 中,我只需通过 JDBC 发出一个 SQL 查询,例如:

SELECT PEOPLE.name, CONTACT.phone_number 
FROM PEOPLE 
LEFT JOIN CONTACT ON PEOPLE.id = CONTACT.pid

我现在想使用 EJB 实体 bean,而不是使用 SQL/JDBC。所以我为我的表创建了相应的 EJB3 实体 bean 类。

所以我现在可以从我的会话 bean 访问这两个实体类,并且我不再希望通过我的会话 bean 中的 SQL/JDBC 直接访问我的数据库表。我只想使用我的实体 bean 和 JPA 的功能。什么是正确的 EJB 设计,以便在我的会话 bean 中,我得到与我的 SQL 查询相同的结果?

我不清楚如何使用 EJB 实体 bean 类来产生与我的 SQL 外连接查询相同的结果。帮助。

4

1 回答 1

2

首先,创建两个 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 生成 OUTER JOIN 查询:

SELECT p FROM People p LEFT JOIN p.contact c
于 2009-11-14T17:38:12.083 回答