假设您具有以下一对多关系:School->Student->ScientificWork
。现在,您要选择所有学生名为“ John”且其科学工作称为“Black Holes”的学校。
我这样做如下,但是由于某种原因,它使我无法接受所有可能的学校。
public static Specification<School> spec() {
return (root, query, cb) -> {
final SetJoin<School, Student> studs = root.joinSet("students", JoinType.LEFT);
final SetJoin<Student, ScientificWork> works = root.joinSet("works", JoinType.LEFT);
return cb.and(
cb.equal(studs.get(Student_.name), 'John'),
cb.equal(nodes.get(ScientificWork_.name), 'Black Holes')
);
};
}
找到此答案后,我尝试了以下操作,但结果相同(它使我返回所有学校而不是所有学校):
public static Specification<School> spec() {
return (root, query, cb) -> {
final SetJoin<School, Student> studs = root.joinSet("students", JoinType.LEFT);
studs.on(cb.equal(studs.get(Student_.name), 'John'));
final SetJoin<Student, ScientificWork> works = root.joinSet("works", JoinType.LEFT);
return cb.equal(nodes.get(ScientificWork_.name), 'Black Holes');
};
}
public static Specification
return (root, query, cb) -> {
final Join
studs.on(cb.equal(studs.get(Student_.name), “John”));
final Join
return cb.equal(works.get(ScientificWork_.name), “Black Holes”);
};
}
我用 join 代替 joinSet, 然后用put**works**.get(ScientificWork_.name)
代替**nodes**.get(ScientificWork_.name)
我在表,中有两列,它们都是唯一的索引(col1是唯一的,col2也是唯一的)。 我需要在插入到这个表,使用语法和更新其他列,但我不能在子句中使用这两个列。 它的工作原理: 但是如何在几个列中做到这一点,就像这样:
我是JPA的新手。使用where子句构建select查询。我需要从表Contacts中选择所有等于字符串名称值的ContactName。 以下是执行我的项目时出现的错误:java.lang.IllegalArgumentException:无法根据在org.hibernate.jpa.criteria.path.abstractPathimpl.unknownatAttribute(abstrac
给定两个具有一对多关系的表(SQLServer的脚本): 一个人只有一个地址,但同一地址可以链接到多个不同的人。 还有一个Spring JPA存储库,其中包含一个显式查询: 使用Hibernate作为JPA提供程序,会为该查找方法生成类似的SQL: 因为我对表中的任何数据都不感兴趣,而且我已经知道了,所以似乎没有真正需要连接: 这个查询给出了相同的结果。 我是否可以让JPA/Hibernate在没
问题内容: 我正在尝试使用hibernate条件生成器连接4个表。 下面分别是这些表。 在这4个表中,我想为MySQL执行以下sql脚本: 那么,如何使用Hibernate CriteriaBuilder实现这一目标?请帮助… 预先感谢....... 问题答案: CriteriaBuilder cb = entityManager.getCriteriaBuilder(); CriteriaQue
为什么Postgres不允许我在JOIN中使用聚合函数? 错误:列“min_price”不存在第19行:且price=min_price^提示:表“h1”中有一个名为“min_price”的列,但无法从查询的这一部分引用该列。
我有一个关于jpa中的子查询类的问题。我需要创建两个自定义字段的子查询,但是子查询没有多选方法,选择方法有表达式输入参数(在查询中这是选择)和配置方法不合适。 此外,我对联接子查询结果有疑问,是否可能?怎么做呢? 我有: 链延伸度 消息实体 查询包装 我需要创建这个查询(这是查询的一部分,我从谓词中获得的另一部分。JPQL不合适) 在子查询中我做 但是,子查询在params中没有带有Compoun