2013-04-27 119 views
0

我有問題:讓我們假設我有兩個類用戶和員工,員工擴展用戶,在用戶我有@Inheritance(strategy = InheritanceType.JOINED)。以這種方式獲得員工是否正確「從用戶p WHERE p.login =:登錄和p.password =:密碼」;登錄和密碼屬性在用戶中。休眠繼承從

ERROR: org.hibernate.hql.internal.ast.QuerySyntaxException: USER is not mapped [FROM USER p WHERE p.login = :login AND p.password = :password]

+0

當您嘗試時發生了什麼?請注意,這不是一個SQL查詢,而是一個HQL查詢。 – 2013-04-27 21:00:45

+0

我仍然得到NullPointerException – adaniluk 2013-04-27 21:01:48

+0

那麼你爲什麼不問你爲什麼會得到一個NullPointerException,向我們展示你的代碼和異常的完整堆棧跟蹤? – 2013-04-27 21:05:40

回答

1

HQL使用類名和映射屬性/特性名稱。總是。它不使用表和列名稱。決不。所以,如果你的類名爲User,如您最初的問題時說,當它應該被命名尊重的Java命名約定,要求您提供的查詢應該很好地工作:

FROM User p WHERE p.login = :login AND p.password = :password 

例外說,查詢實際上是

FROM USER p WHERE p.login = :login AND p.password = :password 

由於USER不是被映射的實體類的名稱,所以它是無效的,正如例外說的那樣。

另請注意,該異常不是NullPointerException,而是QuerySyntaxException。

+1

我改變了它,並重新啓動服務器,但日食欺騙我,並沒有重新啓動服務器,所以我認爲這是不同的錯誤,但現在它的工作原理 – adaniluk 2013-04-27 21:20:11