2014-04-28 44 views
0

我有問題,爲什麼這樣的Hibernate查詢失敗(前提是其他型號的查詢工作正常):休眠querySingleResult沒有返回結果

UserRoles u = (UserRoles) this.commonDAO.querySingleResult("SELECT u FROM UserRoles u where username = :id", QueryParams.c().add("id", user.getId())); 

選中時unull

如果做一個SQL查詢,

SELECT role_name, username 
    FROM user_roles WHERE username = 'johnsmith'; 

返回該行。

+0

是否已打開完整的Hibernate跟蹤看執行的SQL和綁定參數的值? – OldProgrammer

+0

你是否嘗試傳遞常量'johnsmith'而不是'user.getId()'? –

+0

@AlexeyMalev是的,我可以在值現在,顯然的UserRole沒有一個默認的構造函數 - 我仍然開放答案 – xybrek

回答

0

添加修復該問題的默認構造函數。

0

應當由username搜索像

UserRoles u = (UserRoles) this.commonDAO.querySingleResult("SELECT u FROM UserRoles u where username = :username", QueryParams.c().add("username", user.getUsername())); 
+0

你的意思是我的查詢是錯誤的?顯然它工作,當我添加默認的構造函數。 – xybrek

+0

@xybrek我的意思是你的代碼看起來令人困惑,因爲你通過'ID'而不是'username'。 – Alex