[英]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.