我背负着How to join tables in unidirectional many-to-one condition?。
如果您有两个类(class):
class A {
@Id
public Long id;
}
class B {
@Id
public Long id;
@ManyToOne
@JoinColumn(name = "parent_id", referencedColumnName = "id")
public A parent;
}
B-> A是多对一的关系。我知道我可以将B的集合添加到A,但是我不想要该关联。
所以我的实际问题是,是否有创建SQL查询的HQL或Criteria方法:
select * from A left join B on (b.parent_id = a.id)
这将检索所有A记录,并且每个B记录的笛卡尔乘积都引用A,并且将包括没有B引用它们的A记录。
如果您使用:
from A a, B b where b.a = a
那么它是一个内部联接,并且您不会收到没有B引用它们的A记录。
没有两个查询,我还没有找到一种执行此操作的好方法,因此,比这少的任何事情都很棒。
谢谢。
最佳答案
我以您发布的内容为例,我认为这可能有效:
HQL中的select a,b from B as b left outer join b.parent as a
。
我必须找到一种做到这一点的“标准”方法。
关于java - 如何在Hibernate中以单向多对一方式保留联接表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2383459/