我用冬眠. 我有一堂抽象课:
@Data
@Entity
@Table(schema = "timesheetdb", name = "project_property")
@IdClass(ProjectPropertyPK.class)
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "type")
public abstract class ProjectPropertyAbstract {
@Id
private Integer projectId;
@Id
private String type;
}
@Data
@Embeddable
public class ProjectPropertyPK implements Serializable {
private Integer projectId;
private String type;
}
和继承人
@Data
@Entity
@DiscriminatorValue("WAGE_FUND")
public class ProjectWageFundProperty extends ProjectPropertyAbstract {
private Boolean isEnabled;
private Integer percentProfit;
}
@Data
@Entity
@DiscriminatorValue("CROSS_STAFFING")
public class ProjectCrossStaffingProperty extends ProjectPropertyAbstract {
private Boolean isEnabled;
}
我希望在类的后代中指定属性的类型是可能的,并且所有属性都存储在一个表中.
此外,在当前的实现中,启动服务器时会出现错误:
Repeated column in mapping for entity: com.timesheet.entity.project.property.ProjectCrossStaffingProperty column: type (should be mapped with insert="false" update="false")
我试图在"type"字段上方指定@列注释(insert ="false"update ="false"),但是在保存和检索数据时,"type"字段被指定为null,因此不可能返回唯一属性.