使用基本实体的Hibernate Annotation

Tho*_*mas 13 hibernate hibernate-annotations

在我的项目中,我有一个名为BaseEntity的POJO,如下所示.

class BaseEntity{
    private int id;
    public void setId(int id){
        this.id=id;
    }
    public int getId(){
        return id;
    }
}
Run Code Online (Sandbox Code Playgroud)

还有一组其他POJO实体类,如Movie,Actor,......

class Movie extends BaseEntity{
    private String name;
    private int year;
    private int durationMins;
    //getters and setters
}
Run Code Online (Sandbox Code Playgroud)

我只使用BaseEntity将其用作某些界面中的占位符.我永远不必存储BaseEntity对象.我只需要存储从BaseEntity扩展的实体对象.我应该如何注释这些类,以便从BaseEntity扩展每个实体一个表.对于电影,它应该是(id,name,year,durationMins).

Tho*_*mas 28

我在完全不相关的帖子中找到了答案.我只需要将BaseEntity注释为@MappedSuperclass.以下代码完成了我的需要.

@MappedSuperclass
class BaseEntity {
    @Id
    private int id;
    //getters and setters.
}
@Entity
class Movie extends BaseEntity {
    @Column
    private String name;
    @Column
    private int year;
    @Column
    private int durationMins;
    //getters and setters
}
Run Code Online (Sandbox Code Playgroud)

  • 很好,你只是比我快一点:)很多这些问题得到了推荐的'每个具体类的表'策略,当我想到MappedSuperClass这么容易. (3认同)

Joh*_*eke 5

你可以用@MappedSuperClass你的BaseEntity,并且有Movie扩展它.

@MappedSuperClass
class BaseEntity {
    @Id
    private int id;
    ...
}

class Movie extends BaseEntity {
    ...
}
Run Code Online (Sandbox Code Playgroud)