例如,如果我有两个类FullTimeEmployee和PartTimeEmployee。FullTimeEmployee必须扩展Employee表,并使用@MappedSuperclass访问该属性,但是PartTimeEmployee类不需要任何扩展,但如果不扩展所有其他类,则会引发JPA错误。
@MappedSuperclass
public class Employee {
@Id
@GeneratedValue
private long id;
private String name;
.............
}
@Entity
public class FullTimeEmployee extends Employee {
private int salary;
.............
}我不想用employee @MappedSuperclass扩展@MappedSuperclass类不允许我这样做
@Entity
public class PartTimeEmployee {
private int hourlyRate;
.............
}发布于 2019-02-20 08:02:12
你应该重新考虑你的设计和实体命名。如果您的PartTimeEmployee没有扩展Employee,那么至少需要id,因此:
@Entity
public class PartTimeEmployee {
@Id
@GeneratedValue
private long id;
private int hourlyRate;
. . .
}或您还可以创建更巧妙的设计和映射的超类,如:
@MappedSuperclass
public class BaseEntity {
@Id
@GeneratedValue
private long id;您的Employee可以扩展它并继承id
@MappedSuperclass
public class Employee extends BaseEntity {
private String name;
. . .
}您的FullTimeEmployee可以保持原样,PartTimeEmployee可以扩展BaseEntity以继承id
@Entity
public class PartTimeEmployee extends BaseEntity {
private int hourlyRate;
. . .
}https://stackoverflow.com/questions/54780030
复制相似问题