如果我在JPA查询中对两个对象进行比较。实施例
select user.id where user = :user
JPA是否在User类上使用equals方法来比较两者,还是使用类似PK的东西?
答案 0 :(得分:2)
最有可能使用@Id
。否则,提供者需要实例化表中的至少一些用户进行比较,这可能非常昂贵。
您可以尝试记录生成的SQL以确保。
答案 1 :(得分:1)
equals()
转换为SQL标准WHERE
子句并不容易,并且没有查询实际读取代码(equals()
)。这意味着,它只使用PK。您还可以检查JPA实现(hibernate)执行的SQL查询,您将看到它。虽然这不是规范的一部分,但是当您计算具有特定条件的1百万个实体时,您可以想到这种情况:提取所有行并在其上调用equals()
将是一种过度的做法。