Tôi đang sử dụng Hibernate 3.6 và MSSQL 2012.HQL ngầm tham gia trong mệnh đề where tạo chéo tham gia thay vì bên tham gia
Khi thực hiện HQL này
select tbl.state from Property tbl where tbl.state = 1 and tbl.entity.state = 1 and
tbl.entity.className = 'com....' and tbl.fieldName = 'fieldName'
tôi nhận được lệnh SQL này
select property0_.State as col_0_0_ from Properties property0_ cross join Entities
entity1_ where property0_.refEntityid=entity1_.id and property0_.State=1 and
entity1_.State=1 and entity1_.ClassName='com....' and property0_.FieldName='fieldName'
* Chú ý rằng tham gia chéo và thêm điều kiện vào mệnh đề where.
Theo tài liệu Hibernate https://docs.jboss.org/hibernate/core/3.5/reference/en/html/queryhql.html#queryhql-joins-forms
ngầm tham gia nên tạo để bên tham gia.
Tôi nhận thấy rằng có một lỗi mở https://hibernate.atlassian.net/browse/HHH-7707 có thể đề cập đến vấn đề này nhưng không ai trả lời và nó đã được mở trong một năm rồi.
Tôi sẽ đánh giá cao bất kỳ thông tin nào về vấn đề này. Cảm ơn bạn.
PS. Tôi biết rằng việc sử dụng các kết nối ngầm không phải là cách viết đúng HQL nhưng tôi không thể làm bất cứ điều gì về điều này ngay bây giờ.
Wow, điều này thực sự thực sự lame và bị hỏng trên một phần của hibernate. 'trong đó foo.bar không phải là null hoặc foo.bar.baz = x' trả về kết quả không hoàn toàn không logic nếu tất cả các đối tượng foo có tham chiếu thanh rỗng ... – Gus