JPA CriteriaBuilder方法:键和值。如何使用它们?

时间:2019-03-31 00:46:52

标签: java jpa criteria criteria-api

以下两个CriteriaBuilder方法如何使用?您曾经使用过它们还是看到它们在实际应用中使用过?我在网络上找不到示例。阅读代码注释:值和键创建一个可以传递给size(),isMember()等的集合表达式。

//get the values and keys collections of the Map, which may then
//be passed to size(), isMember(), isEmpty(), etc

/**
 * Create an expression that returns the values of a map.
 *
 * @param map map
 *
 * @return collection expression
 */
<V, M extends Map<?, V>> Expression<Collection<V>> values(M map);

/**
 * Create an expression that returns the keys of a map.
 *
 * @param map map
 *
 * @return set expression
 */
<K, M extends Map<K, ?>> Expression<Set<K>> keys(M map);

但是为什么需要JPA来确定集合的大小,或者测试元素是否是集合的成员?看来这可以用Java完成,不需要JPA。

1 个答案:

答案 0 :(得分:0)

我只会回答第二个问题。

  

为什么需要JPA来确定集合的大小,或者   测试元素是否是集合的成员?看来这可以用Java完成,不需要JPA。

这些JPA方法用于构建查询。在从数据库检索数据之前创建条件,这样可以更有效地加载所有数据,然后在Java中对其进行过滤。

例如,用户具有更多角色。我们要加载具有特定角色的用户。为此,member of使用了JPQL保留字。

select u from User u where :specificRole member of u.roles

可以使用相同的方法size()is emptyhttps://www.objectdb.com/java/jpa/query/jpql/collection