栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

jpa CriteriaBuilder

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

jpa CriteriaBuilder

JPA动态查询

CriteriaBuilder cb=entityManager.getCriteriaBuilder();
CriteriaQuery query=cb.createQuery(clazz);
//clazz是你想要转换的类型,就是你的Entity.claa,如果你查的是count,就是Long.claa
Root root=query.from(clazz);
query.select(root);//选取实体

Predicate predicate=cb.conjunction();//交集
predicate=cb.and(predicate,cb.equal(root.get("sex"),condition.get("sex")));

Predicate predicate=cb.disjunction();//并集
predicate=cb.or(predicate,cb.equal(root.get("sex"),condition.get("sex")));

JPA里面对类型控制比较严格,如下所示:

//比较大小
cb.gt(root.get("degree"),(Integer) condition.get("degree"));

//like
cb.like(root.get("user"). get("nickName"),keyword)

//in 条件
root.get("tags").in(condition.get("tag"))

Java CriteriaBuilder.disjunction方法代碼示例

import javax.persistence.criteria.CriteriaBuilder; //導入方法依賴的package包/類
private Predicate getPredicateGlobalSearch(final Root root,final CriteriaQuery 
                     query, final CriteriaBuilder cb, Predicate predicate) {
    // check whether a global filter value exists
    final String globalFilterValue = input.getSearch().getValue();
    if (globalFilterValue != null && globalFilterValue.trim().length() > 0) {
        LOGGER.fine("filtre global: {"+ globalFilterValue+"}");

        Predicate matchoneColumnPredicate = cb.disjunction();
        // add a 'WHERe .. LIKE' clause on each searchable column
        for (final DatatableColumn column : input.getColumns()) {
            if (column.getSearchable()) {
                LOGGER.log(Level.FINE, "filtre global pour colonne: {}", column);
                final expression expression = 
                        DatatableHelper.getexpression(
                        root, column.getData(), String.class);

                matchoneColumnPredicate =cb.or(matchOneColumnPredicate,
                                              cb.like(cb.lower(expression), 
                                              getLikeFilterValue(globalFilterValue), 
                                              ESCAPE_CHAR));
            }
        }
        predicate = cb.and(predicate, matchOneColumnPredicate);
    }
    return predicate;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/287227.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号