繁体   English   中英

休眠条件加入问题

[英]Hibernate Criteria Join problem

我有2个类,它们共享一个UUID并被单向映射。 我使用UUID对相关行进行分组,并且该分组共享许多详细信息(这只是一个示例):

@Entity @Table
class Something {
   @Id @Column("something_id")
   private Long id;

   private String uuid = UUID.randomUUID().toString();

   @OneToMany
   @JoinColumn("uuid")
   private List<Detail> details = new LinkedList<Detail>(); 
}

@Entity @Table
class Detail {
   @Id @Column("detail_id")
   private Long id;
   private String value;
   private String uuid;
}

我正在尝试使用条件:

Criteria c = getSession().createCriteria(Something.class).createAlias("details", "detail").add(Restrictions.eq("detail.value", someValue));

一切都很好,但是由于加入我没有得到结果:

inner join DETAIL d1_ on this_.SOMETHING_ID=d1_.UUID 

是否可以指定:

inner join DETAIL d1 on this_.UUID=d1.UUID

我本来希望@JoinColumn使用@JoinColumn注解来查找@JoinColumn联接的列。 我看到可以指定联接类型,但是看不到指定实际列的方法。

我希望该@JoinColumn使用@JoinColumn批注来查找要@JoinColumn的列。 我看到可以指定联接类型,但是看不到指定实际列的方法。

由于d1_.UUID是在d1_.UUID上进行的,因此d1_.UUID 正在使用JoinColumn批注。 但是,由于未指定referencedColumnName元素,因此假定外键引用了引用表的主键( this_.SOMETHING_ID ),因此获得了结果。

换句话说,请尝试以下操作:

@OneToMany
@JoinColumn(name="uuid", referencedColumnName="uuid")
private List<Detail> details = new LinkedList<Detail>(); 

我不确定要了解的好处,但可以说是另外一回事了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM