Java 注释持久性的继承属性
假设我的a级成绩如下:Java 注释持久性的继承属性,java,hibernate,jpa,annotations,spring,Java,Hibernate,Jpa,Annotations,Spring,假设我的a级成绩如下: class A{ int id; int getId(){}; void setId(int id){}; } @Entity @Table(name="B") class B extends A{ string name; @Column(length=20) string getName(){} void setName(){} } 及乙类,详情如下: class A{ int id; int getId()
class A{
int id;
int getId(){};
void setId(int id){};
}
@Entity
@Table(name="B")
class B extends A{
string name;
@Column(length=20)
string getName(){}
void setName(){}
}
及乙类,详情如下:
class A{
int id;
int getId(){};
void setId(int id){};
}
@Entity
@Table(name="B")
class B extends A{
string name;
@Column(length=20)
string getName(){}
void setName(){}
}
如何注释从中继承的id字段,以便Hibernate/JPA知道它就是id
对于实体?我试着简单地将@Id放在一个字段中,但没有成功。我
也尝试创建实体,但这也不起作用。假设您不希望超类本身表示实体,您可以在超类上使用
@MappedSuperclass
让子类继承持久性的属性:
@MappedSuperclass
class A{
int id;
@Id
int getId(){};
void setId(int id){};
}
考虑将超类抽象化。有关更多详细信息,请参阅文档的第页。您可以使用多种策略。以下是您可以尝试的:
@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
class A{
int id;
@Id @GeneratedValue
int getId(){};
void setId(int id){};
}
@Entity
@Table(name="B")
class B extends A{
string name;
@Column(length=20)
string getName(){}
void setName(){}
}