0

結合とEclipselink JPA2.0エンティティを使用してJPAネイティブクエリを作成する正しい方法は何ですか?

Eclipselink JPAネイティブクエリまたはJPQLを使用して次のSQLクエリを実行するように教えてもらえますか?

SQL クエリは次のとおりです。e.EmployeeName、e.EmpId、d.DeptId を従業員 e、部門 d から選択し、d.DeptId で e.DeptId を結合します。ここで、e.DeptId=d.DeptId

JPA エンティティ Bean コード スニペット

@Entity
@Table(name = "employee")

@JoinColumn(name = "DeptId", referencedColumnName = "DeptId")
@ManyToOne
    private Department DeptId;

@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Employee.findAll", query = "SELECT e FROM Employee e")})

    //more auto generated named queries using NetBeans

JPA エンティティークラス「Employee」は java.io.Serializable を実装し、デフォルトのコンストラクターにはすべての必須フィールドが含まれています。

jpaエンティティをMy-SQLテーブルにマップする正しい方法は何ですか?

多対一の関係: Employee.DeptId --> Department.DeptId Employee.RoleId --> JobRoles.RoleId

Employee.RoleId --> Skills.SkillId 2 つのテーブルで成功した後、3 つのテーブルを結合したいと考えています。

Ecipselink のユーザーガイドを読んでいましたが、入手できませんでした。誰かが私にコードスニペットを提供するか、正しいリソースに案内してくれますか?

私はEclipseLink JPAオンラインガイドを見てきました:

http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Querying http://wiki.eclipse.org/EclipseLink/UserGuide/JPA

Eclipse リンク JPA がネ​​イティブ クエリをサポートしており、JPQL では完全な移植性が得られないため、ネイティブ クエリを使用しています。単一のテーブルにマップされた jpa エンティティを使用して、サンプル jsf-jpa アプリケーションを作成および開発しました。Netbeans IDE では、JPQL クエリの生成と実行にそれほど時間はかかりませんでした。

ネイティブ クエリやストアド プロシージャを使用して JPA エンティティを実行したい。JPAの実装が同じ問題を引き起こさないのであれば、SQLクエリとストアドプロシージャで既存のスキルを使用できれば、より生産的になります。

更新: ネイティブ SQL クエリは、JSR 317 のセクション 3.8.15 SQL クエリ に従って使用できます: [JavaTM Persistence API、バージョン 2.0][1] http://download.oracle.com/otndocs/jcp/persistence-2.0-fr -other-JSpec/

SQL クエリ機能は、使用中のターゲット データベースのネイティブ SQL を使用する必要がある場合 (および Java Persistence クエリ言語を使用できない場合) をサポートすることを目的としています。ネイティブ SQL クエリは、データベース間で移植可能であるとは想定されていません

したがって、移植性は必要ないため、ネイティブクエリを使用することは何も悪いことではないと思います。

4

1 に答える 1