我有一个表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)并将 CITY 从 table2 添加到 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/