JPA:几个 table 到一个实体

JPA: Several table to one Entity

我有一张桌子 1

ID | RECORD | DATE | NAME ...

和一张桌子2

ID | RECORD | DATE | CITY ...

我有一个 POJO Table1.java class:

@Entity
@Table(name="table1")
public class Table1{
private String id = null;
private String record = null;
private Date date = null;
private String name = null;
...
}

然后我执行这样的查询:

...
String q = "select * from table1"
Query query = em.createNativeQuery(q, Table1.class);
return new ArrayList<Table1>(query.getResultList());
...

我需要连接表 1 和表 2(主键 = ID、RECORD、DATE)并从 table2 添加字段 CITY 添加到 Table1class。 我该怎么做?

您正在此处使用 JPA,但正在寻找 SQL 查询。虽然这在 SQL 中显然是可能的,但如果我们想留在 JPA 的域中,那么我们可以使用 @SecondaryTable 功能来做到这一点,该功能允许您将 1 个实体映射到 2 个(或更多)表:

@Entity
@Table(name="table1")
@SecondaryTable(name="table2")
    public class Table1{

    //by default these are mapped to T1
    @Id
    private String id;
    private String record;
    private Date date;
    private String name ;

    //explicitly specify the table to map to T2
    @Column(table="table2")
    private String city:

}

由于您已在实体级别进行映射,因此您实际上并不需要查询,即。 city 只是成为您实体的 属性,SQL 加入在幕后透明完成。

EntityManager em = //;
Table1 t1 = em.find(T1.class, 1);
System.out.println(t1.getCity());

有关详细信息,请参阅以下内容:

http://en.wikibooks.org/wiki/Java_Persistence/Tables#Multiple_tables