2010-10-27 122 views
2

我想創建一個命名查詢,它基於一個id連接兩個表。我得到一個HibernateException,說:「命名查詢中的錯誤:Users.getAllUsers休眠命名查詢加入問題

Users bean有一個私有的設置圖像變量。UserImages bean被映射到一個包含所有用戶的圖像的表。這是我的命名查詢。

@NamedQueries ({ 
    @NamedQuery(name = "Users.getUserImage", 
    query("from Users as users INNER JOIN fetch users.image as image WHERE users.userId = image.userId" AND users.userId =: passedId) 
}) 

我通過可變一個作爲命名查詢的passedId說法。

我非常新冬眠,但我被告知要使用這個取指令,因爲我有一組內包含一堆UserImage bean對象的User bean。任何人都可以看到爲什麼這不起作用?我基於的實際SQL查詢他的關閉在我的sql編輯器中工作是

SELECT * FROM users as u WHERE INNER JOIN user_images as images ON users.userId = images.userId AND users.userId = 1;

+0

爲什麼你在圖像中有一個userId?看起來你的實體模型中有外鍵。當它返回用戶時,爲什麼叫你查詢getUserImage?它聞起來像關於休眠的根本誤解。 – 2012-10-03 10:47:56

+0

除此之外,冒號應該是不帶空格的passedId'=:passedId'的前綴。 userId後面有一個雙引號。 – djmj 2012-11-02 23:59:17

回答

0

想通了。原來我的查詢是正確的,錯誤是我沒有正確地從我的Dao傳遞參數。