首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >忽略非扩展类JPA的@MappedSuperclass

忽略非扩展类JPA的@MappedSuperclass
EN

Stack Overflow用户
提问于 2019-02-20 06:22:02
回答 1查看 181关注 0票数 0

例如,如果我有两个类FullTimeEmployeePartTimeEmployeeFullTimeEmployee必须扩展Employee表,并使用@MappedSuperclass访问该属性,但是PartTimeEmployee类不需要任何扩展,但如果不扩展所有其他类,则会引发JPA错误

代码语言:javascript
复制
@MappedSuperclass
public class Employee {
      @Id
      @GeneratedValue
      private long id;
      private String name;
        .............
}

@Entity
public class FullTimeEmployee extends Employee {
  private int salary;
    .............
}

我不想用employee @MappedSuperclass扩展@MappedSuperclass类不允许我这样做

代码语言:javascript
复制
@Entity
public class PartTimeEmployee {
  private int hourlyRate;
    .............
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-20 08:02:12

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

代码语言:javascript
复制
@Entity
public class PartTimeEmployee {
    @Id
    @GeneratedValue
    private long id;
    private int hourlyRate;
    . . .
}

您还可以创建更巧妙的设计和映射的超类,如:

代码语言:javascript
复制
@MappedSuperclass
public class BaseEntity {
    @Id
    @GeneratedValue
    private long id;

您的Employee可以扩展它并继承id

代码语言:javascript
复制
@MappedSuperclass
public class Employee extends BaseEntity {
    private String name;
    . . .
}

您的FullTimeEmployee可以保持原样,PartTimeEmployee可以扩展BaseEntity以继承id

代码语言:javascript
复制
@Entity
public class PartTimeEmployee extends BaseEntity {
    private int hourlyRate;
. . .
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54780030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档