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