我想使用Spring JPA规范连接函数
这是我的表格代码:
>
public static Specification<InStudent> filterByKeywordAndStatus(final String keyword) {
return (Root<InStudent> root, CriteriaQuery<?> query, CriteriaBuilder cb) -> {
List<Predicate> predicates = new ArrayList<>();
if (StringUtils.hasText(keyword)) {
predicates.add(
cb.or(
cb.like(root.get(InStudent_.name), "%" + keyword + "%"),
cb.like(root.get(InStudent_.address), "%" + keyword + "%"),
cb.like(root.get(InStudent_.phone), "%" + keyword + "%")
)
);
}
return cb.and(predicates.toArray(new Predicate[predicates.size()]));
};
}
我如何在规范中加入表中的学生和家长?
试试这样(如果我没听错的话):
public static Specification<Student> filterByKeywordAndStatus(String keyword, String parentStatus) {
return (student, query, cb) -> {
Join<Student, Parent> joinParent = student.join("parent");
return cb.and(
cb.or(
cb.like(student.get("name"), "%" + keyword + "%"),
cb.like(student.get("address"), "%" + keyword + "%"),
cb.like(student.get("phone"), "%" + keyword + "%")
),
cb.like(joinParent.get("status"), "%" + parentStatus + "%"));
};
}
我正在尝试将查询转换为JPA规范,该查询包含带OR条件的连接操作。 以下是查询: 我试图编写一个规范,但在如何将多个列与OR条件连接方面遇到了障碍。 用户实体: 运营实体 我希望有一个规范来取代上面的查询
支持项 后端数据库为 MySQL、Oracle、PostgreSQL、SQLServer; 用户需要对数据库表中某个或多个列进行加密(数据加密 & 解密); 兼容所有常用SQL。 不支持项 用户需要自行处理数据库中原始的存量数据、洗数; 使用加密功能+分库分表功能,部分特殊SQL不支持,请参考SQL使用规范; 加密字段无法支持比较操作,如:大于小于、ORDER BY、BETWEEN、LIKE等;
支持项 将外围数据迁移至 Apache ShardingSphere 所管理的数据库; 将 Apache ShardingSphere 的数据节点进行扩容或缩容。 不支持项 不支持无主键表的扩容和缩容。
支持项 提供一主多从的读写分离配置,可独立使用,也可配合分库分表使用; 独立使用读写分离支持SQL透传; 基于Hint的强制主库路由。 不支持项 主库和从库的数据同步; 主库和从库的数据同步延迟导致的数据不一致; 主库双写或多写; 跨主库和从库之间的事务的数据不一致。主从模型中,事务中读写均用主库。 可选项 配置项 详细说明 默认值 适用范围 queryConsistent 该配置为 true 时
背景 虽然 Apache ShardingSphere 希望能够完全兼容所有的分布式事务场景,并在性能上达到最优,但在 CAP 定理所指导下,分布式事务必然有所取舍。 Apache ShardingSphere 希望能够将分布式事务的选择权交给使用者,在不同的场景用使用最适合的分布式事务解决方案。
背景 虽然 Apache ShardingSphere 希望能够完全兼容所有的SQL以及单机数据库,但分布式为数据库带来了更加复杂的场景。 Apache ShardingSphere 希望能够优先解决海量数据 OLTP 的问题,OLAP 的相关支持,会一点一点的逐渐完善。