2016-12-14 60 views
0

時如何構建使用Spring數據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 Data如何推斷特定列與哪個表關聯?如果我需要明確地定義,我該怎麼做?

+0

實體映射到表。如果您想將各個表中的各個值映射到Java對象,請參閱http://stackoverflow.com/questions/16420697/spring-data-jpa-how-can-query-return-non-entities-objects-or-對象列表或創建包含必要數據的數據庫視圖並將實體映射到該對象。 –

回答

0

正如Alan Hay所說,一個@Entity類通常映射到數據庫中的一個表。如果沒有「名稱」參數,表名將由類名稱(類MyFoo - >表「MyFoo」)進行傳遞。如果你想引用另外一個表,你可以明確地設置它像這樣:

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

關於你的類成員:如果成員名稱相匹配的列名,你不一定需要@Column批註。

@Entity 
class MyFoo { 
    private String bar; 
} 

將映射到表「MyFoo」同列「酒吧」,直到你明確地使用其他名稱:

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

當你有3代表一個通常需要創建3種@Entity類和3個庫以訪問它們和域對象互相引用(請參閱@OneToOne,@OneToMany等等..)

如果您肯定想堅持多個表的單個實體,您可以選中此答案,使用@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