JPA规范说:
只允许比较相似类型的值。如果类型对应于相同的Java语言类型,或者如果一个类型是原始Java语言类型而另一个类型是 wrafolred Java类类型等价(例如,int和Integer就像这种意义上的类型)。有一个 此规则的例外情况:比较数值促销规则的数值是有效的 应用。除了之外,不允许尝试比较非类似值的条件表达式 这个数字案例。
请注意,允许应用算术运算符和比较运算符 状态字段和与原语等效的包装Java类的输入参数 数字Java类型。
当且仅当它们具有相同的主键时,相同抽象模式类型的两个实体才相等 值。
只需要支持枚举上的相等/不等式比较。
不支持比较可嵌入类或映射条目类型的实例。
这是否意味着查询
where entity1 = entity2
和
where entity1.id = entity2.id
应该总是给出相同的结果(并且具有相同的性能)或者是否存在一些边缘情况(例如,如果其中一个实体为空)?所有实现中的行为是否相同?
答案 0 :(得分:1)
这些可能会有所不同,具体取决于您的实体来自哪里,以及您的JPA实施。
entity1 = entity2,可以允许JPA实现在某些情况下优化连接。