我在JPA中映射了类:
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class User {
private Long id;
private Long name;
//getters and setters go here
....
}
@Entity
public class Admin extends User {
private String cridentials;
//getters and setters go here
....
}
现在在我的代码中,我管理了连接到会话的用户实例
...
User user = entityManager.find(User.class, userId)
我需要把这个用户转换成它的子类,Admin。这意味着我需要“User”表数据保持不变,并将新行插入到“Admin”表中:
javax.persistence.EntityManager entityManager = ...;
...
User user = entityManager.find(User.class, userId)
Admin admin = new Admin();
admin.setName(user.getName());
entityManager.persist(admin);
到目前为止,我找到的唯一方法是保存某个用户的字段,然后从DB中删除这个实例,然后用User类中的所有数据创建新的Admin。但我敢打赌有更好的方法。