我试图弄清楚如何创建一个(命名为?)查询来将我的实体连接在一起。我可以将对象属性用于新实体并且仍然这样做吗?我似乎无法破译这种外观。
我有2个表,一个order和order_assoc表。对于在订单表中创建的重新订购,将在order_assoc中创建一个条目。同样,重新排序可以基于先前的顺序。因此,我在order_assoc中有一列,告诉我它所基于的顺序。
例如,基于先前的1创建了一个重新排序4。因此,现在的assoc表将如下所示。
order order_assoc
------ -------------
1 new 1 <-pk 4 1
2 new
3 new
4 reorder
我有一个现有的实体类用于订购。我向assoc表添加了一个引用(新实体)
@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-阅读这篇文章后,我还是不清楚。
最佳答案
我认为您正在寻找的是join运算符:
SELECT ro FROM Order ro
INNER JOIN o.reOrderAssocEntry roa
INNER JOIN roa.baseReOrderAdoption bo
bo.key = :value
我建议阅读JPQL Language reference