我正在迁移几个代码库以使用Hibernate 5.4.x而不是Hibernate 5.2.x.
对于我使用的抽象基类
@MappedSuperclass
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class AbstractPersistentJPAObject extends AbstractPersistentObject {
// some properties
}
但是,ORM通过错误消息抱怨这一点
实体不能用
@Inheritance
和@MappedSuperclass
注释
这不是Hibernate <= 5.2.x的问题,现在我想知道为什么不应再允许这样做了。
任何坚实的答案欢迎。
我的答案如下:
@MappedSuperclass
和@Inheritance
不能一起使用,映射是不正确的。看来,上面的映射在早期的Hibernate版本中是可以容忍的。但是,这种支持似乎在Hibernate 5.4.x中被删除了。@MappedSuperclass
替换为@Entity
,它应该可以正常工作。在Hibernate forum也有类似的问题。
您还可以查看HHH-13217,其中Gail Badner和Vlad Mihalcea(两个Hibernate Developers)正在讨论此问题。
在下一个即将发布的版本5.4.2中,@Inheritence
将被忽略,如果它与@MappedSuperclass
一起使用(参见Github上的相关PR)。