如何存储从另一个继承的对象

时间:2012-02-21 11:26:38

标签: java hibernate

我对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");

这可以在没有强制转换的情况下完成,但是当我尝试将“user”对象存储到我的数据库中时,我遇到了“未知实体”错误,因为hibernate无法识别LoggedUser正在扩展User类。

在Hibernate中有很多关于实现继承的教程,但我对保存LoggedUser额外属性不感兴趣,我只想存储User表中的那些信息。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我不确定清洁解决方案,但这里有一些提示可能会引导您进行一些。

  1. 将Mark LoggedUser标记为实体,映射到同一个User表(如果可能)并使用@Transient标记您不想保留的字段(所有LoggedUser字段)。
  2. 从LoggedUser向用户添加@Transient字段并删除LoggedUser。
  3. 在User类中创建一个构造函数,该构造函数接受LoggedUser并使用所需属性初始化User。
  4. 将LoggedUser标记为LoggedUserDTO并创建一个实体> dto mapper。
  5. 希望这能带你走向光明的一面。