java - Hibernate注解继承抽象基类

标签 java inheritance annotations hibernate-4.x

在我的应用程序中,我试图通过注释实现 Hibernate 映射。我有一个抽象的基类,在这个类中存在 Id 属性。我正在用一个子类继承这个基类。代码如下:

@MappedSuperclass
@Inheritance(strategy=InheritanceType.JOINED)
public abstract class Base implements IBase {

    private static final long serialVersionUID = -1433573674276444516L;

    private int id;

    public Base() {

    }

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)   
    @Column(name="ID")
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}

子类是:

@Entity
@Table(name="USER")
public class User extends Base implements IUser {

    private static final long serialVersionUID = 344528694909088439L;

    private String name;

    public User() {

    }

    @Column(name="NAME", nullable=false)
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }   
}

它正在创建 USER 表并且工作正常。

我想知道我这样做是否正确。

谢谢。

最佳答案

如果目标只是让几个独立的实体从基类继承一个公共(public)字段,那么不,你做的不正确。注解@Inheritance 是不必要的。当您有一个实体(例如车辆)和多个子实体(例如汽车、自行车)时,@Inheritance 是必需的。

关于java - Hibernate注解继承抽象基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10562864/

相关文章:

java - 如何在项目的现有包中创建 servlet

java - 如何使用 JUnit 测试 Java Web 服务?

c# - Mono.Cecil type.IsAssignableFrom(derivedType) 等效项

php - 了解 PHP 中的类

java - Lombok 注释处理程序类 lombok.javac.handlers.HandleData 失败

ios - 长按手势后 Mapbox 在 map 上找到注释

Java,Hibernate 注释,如何向 POJO 对象添加方法?

java - 这个java方法中的关键字super在做什么?

java - 如何使用 BST 实现哈希表?

java - Spring 错误 - java.lang.NoSuchMethodError : > org. springframework.beans.factory.annotation.InjectionMetadata.<init>