質問

私は、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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top