2
我已经在JPA中映射了类。 :Hibernate将实例转换为子类
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class User {
private Long id;
private Long name;
//getters and setters go here
....
}
我也有这个类的子类,称为管理员:连接到会议
...
User user = entityManager.find(User.class, userId)
我需要用户的
@Entity
public class Admin extends User {
private String cridentials;
//getters and setters go here
....
}
现在在我的代码,我管理的实例将此用户转换为其子类Admin。这意味着我需要“用户”表中的数据保持不变,新行被插入到“管理员”表:
javax.persistence.EntityManager entityManager = ...;
...
User user = entityManager.find(User.class, userId)
Admin admin = new Admin();
admin.setName(user.getName());
entityManager.persist(admin);
但是在我执行的最后一行,另一行插入两个用户和管理员表所示。我将如何解决这个问题?
到目前为止,我发现的唯一方法是将某个用户的字段保存在某个地方,然后从数据库中删除该实例,然后使用User类中的所有数据创建新的Admin。但我敢打赌,这样做有更好的方法。
感谢
其实,管理员有许多属性,用户不应该有 - 这就是为什么我使用继承。用户无法下载到管理员,因此 '管理员a =(管理员)用户;' 在这里不起作用...用户不是抽象的问题,它由系统和管理员使用。然而,我不能'告诉'hibernate从当前用户创建新的管理员 - 即使当我将管理员的ID设置为用户的一个并尝试合并时,它会说管理员不受管理。 – 2010-07-14 14:48:23