JPQL where clause causes unexpected joins in resulting SQL query in the following scenario:
- Class hierarchy with @Inheritance(strategy = InheritanceType.JOINED), see image:

- Class ImageItem has self-reference via ImageItem#original and ImageItem#thumbnail
The following JPQL query: select i from ImageItem i where i.original is null and i.thumbnail is not null creates SQL query:
Due to the inner join: join ImageItem o1_0 on o1_0.id=i1_0.original_id This query will never return ImageItems where original is null! See testcase: https://github.com/dvholsteijn/hibernate-6-invalid-sql/tree/main In hibernate 5.6.15 a correct query is created, see testcase: https://github.com/dvholsteijn/hibernate-6-invalid-sql/tree/hibernate-5 |