我是第一次尝试在 JPA 上工作,有点困惑如何获取父值。
这是我的表结构
T1(
id (pk),
name (varchar)
)
T2(
id (pk),
t1_id (fk_t1),
number (int)
)
T3 (
id (pk),
t2_id (fk_t2),
time (datetime)
zone (tinyint),
name (varchar)
)
如果我必须在 SQL 中工作,我可以使用这个查询
select * from T3, T2, T1
where T3.time = <given_time>,
and T3.name = <given_name>,
and T3.t2_id = T2.id,
and T2.t1_id = T1.id
现在,我如何将其传输到 JPA。我可以使用命名查询,这不是问题所在。但是我应该如何构造对象。
到目前为止我有这个
@Entity
@Table(name="T3, schema="", catalog="dbname")
public class T3Entity{
private int id;
private DateTime datetime;
private int zone;
private String name;
@Id
@Column(name="id", nullable=false, insertable=true, updatable=true)
//GETTER/SETTERS
@Basic
@Column(name="datetime", nullable=false, insertable=true, updatable=true)
//GETTER/SETTERS
@Basic
@Column(name="zone", nullable=false, insertable=true, updatable=true)
//GETTER/SETTERS
@Basic
@Column(name="name", nullable=false, insertable=true, updatable=true)
//GETTER/SETTERS
}
现在我很困惑。我应该创建另一个名为 T2
的字段(每个子项中的父字段)然后注释吗?如何注释?自定义查询会自动设置这些对象的值吗?
最佳答案
您还需要表 T1 和 T2 的实体类,例如T1Entity 和 T2Entity。
在 T3Entity 中添加一个类型为 T2Entity 的成员并使用 @ManyToOne 注释:
public class T3Entity {
...old fields...
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="t2_id")
private T2Entity t2;
// getter, setter
}
开始here阅读有关此注释的信息。
关于java - 如何获取父值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36820029/