Tho*_*ais 2 java hibernate jpa
由于在我开始这个项目之前就存在的原因,有些表的类型相似但 ID 列不同。
所以,当我尝试这个
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Element implements Serializable {
public String title;
}
@Entity
public class PrimaryElement extends Element {
@Id
long pid;
}
@Entity
public class OtherElement extends Element {
@Id
long oid;
}
Run Code Online (Sandbox Code Playgroud)
但后来我得到一个明显的错误
No identifier specified for entity: Element
Run Code Online (Sandbox Code Playgroud)
现在,我不能很好地将 ID 放在 Element 类中,因为它们显然映射到不同的列。
我尝试过各种风格的 @Id 和 'abstract' 和 @MappedSuperClass 等等..
我完全不知所措。有没有解决的办法?
任何见解将不胜感激。
谢谢!
您可以将 Element 类的 @Entity 和 @Inheritance 批注替换为 @MappedSuperclass(此批注负责技术映射,只有 PrimaryElement 和 OtherElement 将是全功能实体)或将带有 @Id 批注的 oid 字段移动到类Element 并在其子类中使用 @AttributeOverride 注释来修改列名(在这种情况下,抽象类 Element 也将是一个功能齐全的实体)。
@AttributeOverride(name="oid", column=@Column(name="primary_element_id"))
Run Code Online (Sandbox Code Playgroud)
更新:
@MappedSuperclass
public abstract class Element implements Serializable {
@Id
private long id;
public String title;
}
@Entity
@AttributeOverride(name="id", column=@Column(name="pid"))
public class PrimaryElement extends Element {
}
@Entity
@AttributeOverride(name="id", column=@Column(name="oid"))
public class OtherElement extends Element {
}
Run Code Online (Sandbox Code Playgroud)