在JPQL中如何评估实体比较(相等)语句:是通过身份比较,equals()还是其他方式?
我花了几个小时的时间来仔细研究Hibernate和JPA的规范,但仍然找不到它的工作方式。考虑以下实体:
class MyProductType{Integer id;}
class MyProduct{Integer id; MyProductType pType;}
Run Code Online (Sandbox Code Playgroud)
现在是JPQL / HQL查询:
SELECT t FROM MyProductType t, MyProduct p WHERE p.pType = t
Run Code Online (Sandbox Code Playgroud)
(我知道这是一个丑陋的查询,只关注where子句的语义。)
那么如何p.pType = t评估?
JSR 317提到了“ entity_expression”比较,但是其行为尚不清楚。
编辑:我不喜欢Rika的以下建议是.id方法包括隐式内部联接,如果查询使用外部(LEFT)联接,通常这不是您想要的。