gpt4 book ai didi

hibernate - @AttributeOverride 不适用于继承

转载 作者:行者123 更新时间:2023-12-02 23:31:13 25 4
gpt4 key购买 nike

我试图更改子类表中的列名,但 @AttributeOverride 注释并未更改它。

@Entity @Table(name="emp")
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public class Employee {
@Id @GeneratedValue(strategy=GenerationType.AUTO)
protected int id;
protected String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

}

@Entity
@Table(name="RegularEmployee")
@AttributeOverrides({
@AttributeOverride(name="id", column=@Column(name="REGID")),
@AttributeOverride(name="name", column=@Column(name="REGNAME"))
})
public class RegularEmployee extends Employee {
private int salary;
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
}

但是创建的表结构是:

员工:

CREATE TABLE EMP
(
ID NUMBER(10) NOT NULL,
NAME VARCHAR2(255 CHAR)
)

正式员工:

CREATE TABLE REGULAREMPLOYEE
(
ID NUMBER(10) NOT NULL,
NAME VARCHAR2(255 CHAR),
SALARY NUMBER(10) NOT NULL
)

最佳答案

阅读 @AttributeOverrideJavaDoc 会有所帮助:

May be applied to an entity that extends a mapped superclass or to an embedded field or property to override a basic mapping or id mapping defined by the mapped superclass or embeddable class (or embeddable class of one of its attributes).

当您使用InheritanceType.TABLE_PER_CLASS时,您可以简单地为Employee切换到@MappedSuperclass。如果您仍然需要 EMP 表,您可以从该父类(super class)继承第二个类。

关于hibernate - @AttributeOverride 不适用于继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31772880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com