翻訳は、EJBエンティティBeanにSQLクエリを外部結合します
質問
私は、EJBへの新たなんだとEJBエンティティBeanにSQL概念を翻訳まわりで私の頭を取得しようとしています。
PEOPLE(ID、名前)、CONTACT(PID、PHONE_NUMBER):私は2つのテーブルがあるとします。私は、彼らが電話#Sを持っているかどうかに関係なく、すべての人々のリストを取得したい場合は、私の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の機能を使用したいです。私のセッションBeanで、私は私のSQLクエリと同じ結果を得るように、適切なEJBのデザインとは何ですか?
私は私のSQL外部クエリに参加するのと同じ結果を生成するために、EJBエンティティBeanクラスを使用する方法については不明です。ヘルプます。
解決
まず、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
}
次に、OUTERを生成することがJPQLを使用してクエリのJOINます:
SELECT p FROM People p LEFT JOIN p.contact c
所属していません StackOverflow