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;
}
}
それはUSER表を作成し、正常に動作しています。
私は正しい方法でそれをやっているのか疑問に思っていました。
ありがとうございました。
返信いただきありがとうございます。 Baseから@MappedSuperclassと@Inheritance(strategy = InheritanceType.JOINED)を削除しても、IDのAnnotationを保持すると、例外が発生します。org.hibernate.AnnotationException:エンティティにapprecvが指定されていません:app.dev.ems .data.model.impl.User –
MappedSuperclassアノテーションを削除しないでください。継承アノテーションのみ。それはどちらか一方です。そしてあなたがここで望むものはMappedSuperclassです。あなたはjavadocを読んだことがありますか? –
ありがとうございます。私はそれを読んでいる。 –