gpt4 book ai didi

java - 忽略非扩展类 JPA 的 @MappedSuperclass

转载 作者:行者123 更新时间:2023-12-02 10:14:25 24 4
gpt4 key购买 nike

例如,如果我有两个类 FullTimeEmployeePartTimeEmployeeFullTimeEmployee 必须扩展 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;
.............
}

我不想用员工扩展 PartTimeEmployee@MappedSuperclass 不允许我这样做

@Entity
public class PartTimeEmployee {
private int hourlyRate;
.............
}

最佳答案

您应该重新考虑您的设计和实体命名。如果您的 PartTimeEmployee 未扩展 Employee,您至少需要 id,因此:

@Entity
public class PartTimeEmployee {
@Id
@GeneratedValue
private long id;
private int hourlyRate;
. . .
}

或者您还可以创建更巧妙的设计和映射的父类(super class),例如:

@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;
. . .
}

关于java - 忽略非扩展类 JPA 的 @MappedSuperclass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54780030/

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