当前位置: 首页 > 知识库问答 >
问题:

Spring Jpa规范使用like连接表

江飞章
2023-03-14

我想使用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()]));
};

}

我如何在规范中加入表中的学生和家长?

共有1个答案

殳毅
2023-03-14

试试这样(如果我没听错的话):

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 的相关支持,会一点一点的逐渐完善。