2
在我的應用程序中,我試圖通過註釋實現Hibernate映射。在那裏我有一個抽象的基類,在這個類中存在Id屬性。我正在用一個子類繼承這個基類。下面的代碼給出:Hibernate Annotation繼承抽象基類
@MappedSuperclass
@Inheritance(strategy=InheritanceType.JOINED)
public abstract class Base implements IBase {
private static final long serialVersionUID = -1433573674276444516L;
private int id;
public Base() {
}
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="ID")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
而子類是:
@Entity
@Table(name="USER")
public class User extends Base implements IUser {
private static final long serialVersionUID = 344528694909088439L;
private String name;
public User() {
}
@Column(name="NAME", nullable=false)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
它創建用戶表和工作的罰款。
我想知道我是否正確地做到這一點。
謝謝。
感謝您的回覆。如果我從Base中刪除了@MappedSuperclass和@Inheritance(strategy = InheritanceType.JOINED),但在Id上保留Annotation,那麼我會得到異常:org.hibernate.AnnotationException:沒有爲entity:app.dev.ems指定標識符.data.model.impl.User –
不要移除MappedSuperclass註解。只有繼承註釋。它是一個或另一個。而你想在這裏的是MappedSuperclass。你讀過他們的javadoc嗎? –
謝謝。我在讀它。 –