gpt4 book ai didi

java - 如何为单向关系构造反向连接?

转载 作者:搜寻专家 更新时间:2023-10-31 08:04:32 24 4
gpt4 key购买 nike

我想这很简单,但我想不通。

如果我有实体 Foo 和 Bar:

@Entity
class Foo{
@OneToMany
List<Bar> bars;
}

@Entity
class Bar{
@Column
int data;
}

如果我想创建一个 Join ( javax.persistence.criteria.Join<Foo, Bar>) 对象,我可以这样做:

Root<Foo> root = ...;
Join<Foo,Bar> join = root.join(Foo_.bars);

但是我怎样才能进行反向连接

Join<Bar,Foo> inverseJoin = barRoot.join....()...?

因为我在 Bar 类中没有指向它的 Foo 父类的 java 字段,所以它是单向关系?

最佳答案

如果您需要的是一个已知的 Bar,它属于 Foo,那么这将适合。句子不会被翻译成 SQL JOIN,但它在语义上是等价的。

CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Foo> cq = cb.createQuery(Foo.class);

Root<Foo> fooRoot = cq.from(Foo.class);
Root<Bar> barRoot = cq.from(Bar.class);

cq.select(fooRoot);
cq.where(barRoot.in(fooRoot.get("bars")));

关于java - 如何为单向关系构造反向连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26717257/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com