0

JPA 规范说:

只允许比较相似类型的值。如果一个类型对应于相同的 Java 语言类型,或者如果一个类型是原始 Java 语言类型而另一个是包装的 Java 类类型等价物(例如,int 和 Integer 在这个意义上是类似的类型),则它们类似于另一种类型。此规则有一个例外:比较适用数值提升规则的数值是有效的。除了这种数字情况外,不允许尝试比较非相似类型值的条件表达式。

请注意,允许将算术运算符和比较运算符应用于与原始数字 Java 类型等效的包装 Java 类的状态字段和输入参数。

当且仅当它们具有相同的主键值时,相同抽象模式类型的两个实体才相等。

只需要支持枚举上的相等/不等比较。

不支持对可嵌入类或映射条目类型的实例进行比较。

这是否意味着查询

where entity1 = entity2

where entity1.id = entity2.id

应该始终给出相同的结果(并具有相同的性能)还是存在一些边缘情况(例如,如果实体之一为空)?所有实现中的行为都相同吗?

4

1 回答 1

1

这些可能会有所不同,具体取决于您的实体来自何处以及您的 JPA 实现。

entity1 = entity2,可能允许 JPA 实现在某些情况下优化连接。

于 2012-12-03T15:21:37.943 回答