gpt4 book ai didi

java - JPA:多个表对应一个实体

转载 作者:行者123 更新时间:2023-12-02 04:53:51 25 4
gpt4 key购买 nike

我有一个表1

ID | RECORD | DATE | NAME ...

和一个表2

ID | RECORD | DATE | CITY ...

我有一个 POJO Table1.java 类:

@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());
...

我需要连接 table1 和 table2(主键 = ID、RECORD、DATE)并将 CITYtable2 添加到 Table1 类。我怎样才能做到这一点?

最佳答案

您在这里使用 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

关于java - JPA:多个表对应一个实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28967849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com