我是新来的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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top