2012-02-21 51 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