java - 使用对象属性的 JPA 命名查询

标签 java hibernate jpa

我试图弄清楚如何创建一个(命名?)查询将我的实体连接在一起。我可以使用新实体的对象属性并仍然执行此操作吗?我似乎无法解读它会/应该是什么样子。

我有 2 个表,一个 order 和 order_assoc 表。对于在订单表中创建的重新订单,将在 order_assoc 中创建一个条目。此外,重新订购可以基于先前的订单。因此,我在 order_assoc 中有一个列告诉我它所基于的顺序。

例如,创建了一个基于先前 1 的重新排序 4。因此,现在关联表将如下所示。

  order        order_assoc
 ------       -------------
 1 new        1 <-pk  4   1
 2 new
 3 new
 4 reorder

我有一个现有的订单实体类。我向关联表添加了一个引用(新实体)

  @OneToOne(fetch = FetchType.LAZY,  optional = true, cascade = {CascadeType.ALL},
mappedBy = "onlineAdoptionEntity", targetEntity = OnlineAdoptionReOrderAssocEntity.class)
private OnlineAdoptionReOrderAssocEntity reOrderAssocEntity;

新实体如下所示。

    @Id
@Column(name = "OA_REORDER_ID")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "reOrderNumberSeq")
@SequenceGenerator(name = "reOrderNumberSeq", sequenceName = "REORDER_NUMBER_SEQ", allocationSize=1)
private Long id;

@OneToOne(optional = true,cascade = CascadeType.ALL)
@JoinColumn(name="OA_ADOPTION_ID")
private OnlineAdoptionEntity onlineAdoptionEntity;


@ManyToOne(optional = true)
@JoinColumn(name="OA_ORIGINAL_ADOPTION_ID_ASSOC")
private OnlineAdoptionEntity baseReOrderAdoption;

非常感谢任何帮助。我看到有一个类似的帖子here - 读完这篇文章后我不清楚。

最佳答案

我认为您正在寻找的是连接运算符:

SELECT ro FROM Order ro
  INNER JOIN o.reOrderAssocEntry roa
  INNER JOIN roa.baseReOrderAdoption bo
  bo.key = :value

我建议阅读JPQL Language reference

关于java - 使用对象属性的 JPA 命名查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16224137/

相关文章:

java - 将 boolean 变量设置为条件?

java - hibernate 中的createSQLQuery使用Prepared Statement?

java - Hibernate - 使用生成的复合键插入临时子实体

java - com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException : Column 'id' cannot be null?

java - 使用 Jsch SSH 到我的 Raspberry Pi 和 Shutdown 命令不起作用...

java - 泛型困惑

OS X 10.9.1 上的 java "import java.util.*"编译失败

java - hibernate 级联

java - HSQLDB 和 Hibernate/JPA - 不持久化到磁盘?

sql - 无法级联删除@OneToOne 成员