Hibernate如何在不映射超类的情况下覆盖实体

时间:2017-06-12 05:55:41

标签: spring hibernate jpa spring-boot

我在一个公共项目中有一组实体,我想覆盖子项目中的一些值。它可以是不同的映射,额外的字段等......

当我添加一个扩展普通实体的实体时,它被创建为子类并需要discrimantor列。

在公地:

@Entity
class SomeTable {
  private Long id;
}

在子项目中

@Entity
class SomeTable extends common.SomeTable {
    private String extraField;
}

我基本上想要的是将子实体(SubEntity)映射为org.hibernate.mapping.RootClass。我使用org.springframework.orm.jpa.persistenceunit.PersistenceUnitPostProcessor从PersistenceUnitInfo中明确删除了常用的类,但它没有帮助。有没有办法禁止映射父类?

我正在使用spring-boot和Hibernate 5.0.11

更新:到目前为止,我想出了一个解决方案,将两个SomeTable实体映射到xml配置,并从PersistenceUnitInfo中删除它们。根据我的意见不是很好的方法,但它允许做我想做的事情:分别保留几个项目的所有常用代码,并能够覆盖子项目中的一些模型......

1 个答案:

答案 0 :(得分:0)

@javax.persistence.MappedSuperclass课程中添加@javax.persistence.Entity注释而不是SomeTable

这是您的SomeTable类不会被映射或创建任何其他表。它只会向从其继承的其他实体添加额外的列。