我背负着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/

10-10 02:33