小编Fel*_*lix的帖子

真正动态的JPA CriteriaBuilder

我需要创建一个"真正的"动态JPA CriteriaBuilder.我得到Map<String, String>了陈述.看起来像:

name : John
surname : Smith
email : email@email.de

...more pairs possible
Run Code Online (Sandbox Code Playgroud)

这是我实现的:

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<User> query = cb.createQuery(User.class);
Root<User> userRoot = query.from(User.class);
query.select(userRoot);

List<Predicate> predicates = new ArrayList<Predicate>();
Iterator<String> column = statements.keySet().iterator();
while (column.hasNext()) {

    // get the pairs
    String colIndex = column.next();
    String colValue = statements.get(colIndex);

    // create the statement
    Predicate pAnd = cb.conjunction();
    pAnd = cb.and(pAnd, cb.equal(userRoot.get(colIndex), colValue));
    predicates.add(pAnd);
}

// doesn't work, i don't know how many predicates …
Run Code Online (Sandbox Code Playgroud)

java jpa criteria-api jpa-2.0

47
推荐指数
3
解决办法
7万
查看次数

标签 统计

criteria-api ×1

java ×1

jpa ×1

jpa-2.0 ×1