java - 如何获取父值

标签 java mysql database jpa persistence

我是第一次尝试在 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/

相关文章:

java - 如何理解位图照片是垂直还是水平?

java - 用于填充 Map 的 Lambda

php - 无法在 Codeigniter 中检索两个时间范围之间的数据

java - android 启动 Activity 并继续运行上一个

java - 使用 JSON 参数从 PHP 调用 Java

php - 使用 md5() 对密码进行散列并将其存储到数据库后,无法再次登录

mysql 锁等待超时,尝试重启事务

sql - 用缺少的列值填充 postgres 表行

sql - HTML5 数据库的现状如何?

mysql join从3个表中获取数据,添加时间和int,将错误作为总和值的倍数