java - 父字段上的 Hibernate 注解

标签 java hibernate jpa

我有一个 POJO 类,没有特殊的 Hibernate 注释或信息,如下所示:

public class Parent{
   Long id;
   String foo;
   String bar;
   /* ... getters and setters, toString(), etc... */
}

我想创建一个带有 Hibernate 注释的子类。这个想法是第一个类不会对其有任何依赖,第二个类将拥有所有 JPA/Hibernate 特定的东西。如何在不重新创建父级中的所有字段的情况下做到这一点?我想在类上添加 Hibernate 注释

@Entity
public class PersistentChild extends Parent{
  // ????
}

最佳答案

您可以在 POJO 上使用 @MappedSuperclass 注释,然后添加其他注释,就像它是普通的 JPA 实体一样。但在这种情况下,注释只会影响继承自它的实体类。示例:

@MappedSuperclass
public class Parent implements Serializable {
     @Id
     Long id;
     @Column(name = "foo", required = true)
     String foo;
     @Column(name = "bar", required = false)
     String bar;
     /* ... getters and setters, toString(), etc... */
}

如果你确实不想修改父类(super class),可以使用映射文件:

<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm 
            http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" version="1.0">
    <mapped-superclass class="Parent">
        <!-- add your mapping here -->
    </mapped-superclass>
</entity-mappings>
<小时/>

替代方法

此外,您只需添加 @MappedSuperclass 注释,然后定义所有属性,如下所示:

@Entity
@AttributeOverrides({
    @AttributeOverride(name = "foo", column=@Column(name = "foo", required = true)),
    @AttributeOverride(name = "bar", column=@Column(name = "bar", required = false))
})
public class PersistentChild extends Parent {
    @Id @GeneratedValue
    Long id;
}

关于java - 父字段上的 Hibernate 注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33368691/

相关文章:

java - Android - Jacoco 代码覆盖忽略 Robolectric 测试

spring - 带有 Java util.Date 的 Postgres 时间戳列

java - 日期加一

java - 我的 Spring Boot 服务器返回 406 Http 错误代码

hibernate : Where exactly do we need to close the SessionFactory Object

java - 在 EntityMode.DOM4J session 中使用条件时出现 Hibernate NullPointerException

客户端中的 Java/Hibernate 并具有重新连接功能

java - Spring 与 Hibernate JPA - EntityManager 已关闭异常

java - 使用@Inheritance JPA属性时插入顺序无效

java - 为 ESAPI 设置资源目录