JPA是否使用实体等于查询中的比较

时间:2014-05-27 11:36:42

标签: hibernate jpa

如果我在JPA查询中对两个对象进行比较。实施例

select user.id where user = :user

JPA是否在User类上使用equals方法来比较两者,还是使用类似PK的东西?

2 个答案:

答案 0 :(得分:2)

最有可能使用@Id。否则,提供者需要实例化表中的至少一些用户进行比较,这可能非常昂贵。

您可以尝试记录生成的SQL以确保。

答案 1 :(得分:1)

equals()转换为SQL标准WHERE子句并不容易,并且没有查询实际读取代码(equals())。这意味着,它只使用PK。您还可以检查JPA实现(hibernate)执行的SQL查询,您将看到它。虽然这不是规范的一部分,但是当您计算具有特定条件的1百万个实体时,您可以想到这种情况:提取所有行并在其上调用equals()将是一种过度的做法。