gpt4 book ai didi

java - 使用 JPQL 计算关联对象的正确方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:14:38 24 4
gpt4 key购买 nike

编写此 JPA 查询的正确方法是什么?我只是在猜测,因为我无法解决或无法在我的 JPA 书中找到它。

Query query=em.createQuery("select m from Meeting m where count(m.attendees) = 0");
return query.getResultList();

我目前正在使用 Hibernate 尝试此操作,但出现 mysql 错误!

ERROR org.hibernate.util.JDBCExceptionReporter - You have an error in your
SQL syntax; check the manual that corresponds to your MySQL server version
for the right syntax to use near ')=0' at line 1

最佳答案

要严格回答问题的标题,使用SIZE:

Query query=em.createQuery("select m from Meeting m where size(m.attendees) = 0");
return query.getResultList();

来自 JPA 规范:

4.6.16.2 Arithmetic Functions

functions_returning_numerics::=
ABS(simple_arithmetic_expression) |
SQRT(simple_arithmetic_expression) |
MOD(simple_arithmetic_expression, simple_arithmetic_expression) |
SIZE(collection_valued_path_expression)

The ABS function takes a numeric argument and returns a number (integer, float, or double) of the same type as the argument to the function.

The SQRT function takes a numeric argument and returns a double.

The MOD function takes two integer arguments and returns an integer.

The SIZE function returns an integer value, the number of elements of the collection. If the collection is empty, the SIZE function evaluates to zero.

Numeric arguments to these functions may correspond to the numeric Java object types as well as the primitive numeric types.

0 的特殊情况下,您还可以使用 IS EMPTY

4.6.11 Empty Collection Comparison Expressions

The syntax for the use of the comparison operator IS EMPTY in an empty_collection_comparison_expression is as follows:

collection_valued_path_expression IS [NOT] EMPTY

This expression tests whether or not the collection designated by the collection-valued path expression is empty (i.e, has no elements).

Example:

SELECT o
FROM Order o
WHERE o.lineItems IS EMPTY

If the value of the collection-valued path expression in an empty collection comparison expression is unknown, the value of the empty comparison expression is unknown.

我会同时测试两者,看看哪个最有效(检查查询计划)。

关于java - 使用 JPQL 计算关联对象的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3509408/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com