tôi cần phải làm truy vấn SQL này với DetachedCriteria:Hibernate Tiêu chuẩn Subquery
SELECT g.id FROM games g
WHERE NOT EXISTS (
SELECT 1 FROM users_games ug WHERE ug.user_id = 1 AND g.id = ug.game_id)
Ý tưởng là để có được id từ các trò chơi mà không phải thuộc sở hữu của người sử dụng. tôi đã cố gắng như 10 cách tiếp cận khác nhau với DetachedCriteria nhưng tôi nhận được "thực thể Unknown: null" MappingException Mã nên trông giống như:
DetachedCriteria subquery = DetachedCriteria.forClass(UserGame.class, "ug")
.add(Restrictions.eq("ug.user.id", 1))
.add(Restrictions.eqProperty("ug.game.id","u.id"));
DetachedCriteria criteria = DetachedCriteria.forClass(Game.class, "g")
.add(Subqueries.notExists(subquery));
Setting cũng là dự báo trở lại chỉ id của các trò chơi.
Bất kỳ ý tưởng nào? Tôi nghĩ rằng Hibernate có một số rắc rối khi tham gia các truy vấn không có bí danh. Thêm bí danh hoạt động nhưng kết quả là sai.
Bạn không ánh xạ liên kết giữa "trò chơi" và "user_games" trong đối tượng/ánh xạ của bạn? –
user_games có ánh xạ tới các trò chơi nhưng không phải là viceversa – Gonzalo