2012-02-21 49 views
0

我有一個關於Hibernate的問題。我使用3.1.3版本,我有兩個類,一個繼承另一個。這是我的場景:如何存儲從另一個繼承的對象

//User class, which is stored in the database and hibernate mapped 
public class User 

//Logged user class, this is a bean which inherits from user and 
//stores only user information and some session data 
public class LoggedUser extends User 

在我的代碼中的某處,我從會話中獲取LoggedUser bean,並將其分配給User變量。

User user = Session.getBean("LoggedUser"); 

這可以在不投做,但是當我嘗試以「用戶」對象存儲到我的數據庫我有一個「未知的實體」的錯誤,因爲Hibernate不承認LoggedUser是擴大用戶類。

有很多關於在Hibernate中實現繼承的教程,但我不想保存LoggedUser額外的屬性,我只想存儲用戶表中的信息。任何想法?

回答

0

我不清楚乾淨的解決方案,但這裏有一些提示,可能會導致你一些。

  1. 馬克LoggedUser作爲一個實體,映射到相同的用戶表(如果可能),並標出你不想堅持字段(所有LoggedUser領域)與@Transient。
  2. 將@Transient字段添加到來自LoggedUser的用戶並擺脫LoggedUser。
  3. 在User類中創建一個構造函數,該類使用LoggedUser並初始化具有所需屬性的用戶。
  4. Mark LoggedUser as LoggedUserDTO and make a entity> dto mapper。

希望這會把你帶到光明的一面。

+0

它與第一個選項一起工作,但是按照使用標記的順序,我已將LoggedUser類指定到user.hbm.xml中,並使用用戶的相同屬性並指向同一個表。謝謝! – 2012-02-21 17:10:14

+0

那麼它的好,但我仍然認爲,繼承+瞬態字段比重複實體在XML中,但它取決於.. – JMelnik 2012-02-21 18:19:20