2016-12-14 58 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