Specification如何写一个多表查询的Predicate的方法呢?jpa的
@Override
public Predicate toPredicate(Root<One> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
List<Predicate> list = new ArrayList<Predicate>();
//如下方法是查询One里面的单一内容,这样构成了一个条件
if (searchParams.get("bus_like") != null) {
list.add(cb.like(root.get("busNum").as(String.class), "%" + searchParams.get("bus_like") + "%"));
}
//假设我需要在此查询Two和Three表的内容,如何弄呢?
Predicate[] p = new Predicate[list.size()];
return cb.and(list.toArray(p));
}
如图,在总的方法中,已经定义Root为One了。那么,如果再接下来在方法内写一个Two、Three多表查询的Predicate.......??比如,我需要知道表Two中的权限是否对应One中的数据,然后决定是否显示呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
假设有 A,B,C三张表
class A{
}
class B{
}
class C{
}
目的是 通过C 查询到A的相关内容
当前root 是 A
Join<A, B> join = root.join("bs", JoinType.LEFT);
list.add(cb.equal(join.get("c").get("id"), id));
@Override
cb.eq(root.get("two").get("privilege"), root.get("one_privilege"));
在One实体中 添加
@OneToOne
private Two two;
你好!我也遇到这个问题了,咋写的啊