2016-12-14 2 views
0

を使用するときに春データJpaRepositoryを使用してエンティティクラスを作成するにはここに私のユースケースこのシナリオではどのよう@query

マイJPAレポインタフェース

@Repository 
public interface MyJpaRepository extends JpaRepository<MyEntity, Integer> { 

//Example query that illustrates working with multiple tables only. Ignore the details of join conditions 
    @Query(value="SELECT a.p, a.q,a.r , b.s, b.t, c.u,c.v FROM a, b, c 
WHERE a.p=?1,b.s=?2,c.u=5"+ 
      "ORDER BY b.t",nativeQuery = true) 
    List<MyEntity> findByPAndS(String p, Integer s); 

} 

だ、どのように私のエンティティは次のようになりますか?ここに私の草案があります

@Entity 
public class MyEntity { 

    @Column 
    private Integer p; 

    @Column 
    private Integer q; 

    @Column 
    private String r; 

    @Column 
    private String s; 

    @Column 
    private String t; 

    @Column 
    private String u; 

    @Column 
    private Double v; 

    public MyEntity(){ 
    } 
} 

エンティティの宣言に問題はありますか? JPA/Springデータは、特定の列に関連付けられている表をどのように推測しますか?それを明示的に定義する必要がある場合は、どうしたらいいですか?

+0

エンティティはテーブルにマップされます。さまざまなテーブルの個々の値をJavaオブジェクトにマップする場合は、http://stackoverflow.com/questions/16420697/spring-data-jpa-how-can-query-return-non-entities-objects-or-オブジェクトのリストを作成するか、または必要なデータを含むDBビューを作成し、エンティティをマッピングします。 –

答えて

0

@Antityクラスは通常、データベース内の1つのテーブルにマップされています。 "name"パラメータがなければ、テーブル名はクラス名(クラスMyFoo - > Table "MyFoo")によって推論されます。あなたのクラスのメンバーに関する

@Entity(name = "MyTableName") 
class MyFoo {} 

:あなたは明示的にそうようにそれを設定することができ、別のテーブルを参照してくださいしたい場合はメンバー名が一致する場合、列はあなたが必ずしも@Column注釈を必要としない名前を付けます。

@Entity 
class MyFoo { 
    private String bar; 
} 

あなたが明示的に別の名前を使用するまで、コラム「バー」と表「MYFOO」にマップされます:あなたは3つのテーブルを持っていたよう

@Column(name = "Mycolumn") 
private String bar; 

1は通常3つの@Entityクラスと3つのリポジトリを作成しますが(@OneToOne、@OneToManyなどを参照してください)

複数のテーブルに対して1つのEntityを確実に使用したい場合は、 @SecondaryTable:is-possible-map-a-single-entity-with-multiple-tables-using-jpa

0
@Entity 
@Table 
public class Employee { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 

    private int eid; 
    private String ename; 
    private double salary; 
    private String deg; 

    public Employee(int eid, String ename, double salary, String deg) { 
     super(); 
     this.eid = eid; 
     this.ename = ename; 
     this.salary = salary; 
     this.deg = deg; 
    } 

    public Employee() { 
     super(); 
    } 

    public int getEid() { 
     return eid; 
    } 

    public void setEid(int eid) { 
     this.eid = eid; 
    } 

    public String getEname() { 
     return ename; 
    } 

    public void setEname(String ename) { 
     this.ename = ename; 
    } 

    public double getSalary() { 
     return salary; 
    } 

    public void setSalary(double salary) { 
     this.salary = salary; 
    } 

    public String getDeg() { 
     return deg; 
    } 

    public void setDeg(String deg) { 
     this.deg = deg; 
    } 
} 

このリンクが必要だと思います。 enter link description here

関連する問題