【发布时间】:2016-09-26 14:33:42
【问题描述】:
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
在父类中允许将子实体视为具有与父类相同的信息以及一些属性的表。阅读时对我来说很好 (http://viralpatel.net/blogs/hibernate-inheritance-table-per-concrete-class-annotation-xml-mapping/)。
但如果我存储子实体(目前它只填充子表),我希望这样,父表也会随着共享部分的插入而更新。
这是否可以配置,或者我是否需要在任何给定的写操作的事务中显式执行childRepo.save(child) 加上parentRepo.save(child)?
这在某种程度上是 TABLE_PER_CLASS 和 JOINED 策略的混合。 JOINED 将共享信息存储在父级中,而额外的属性存储在子级中;而 TABLE_PER_CLASS 将所有内容存储在子项中。我想要包含所有信息的子表,而父表也可以同步所有共享信息。
【问题讨论】:
-
什么是
childRepo? -
什么是“存储库”?如果您指的是 Spring Data 存储库,那么这是您需要在问题中包含的主要组件。而且您永远不必将子类强制转换为其超类,以便将其传递给接受超类的方法。
-
1.是的,抱歉,Spring Data 的 JPA 存储库。 2.这就是为什么我讨厌这种解决方法,我正在尝试找到一个更简洁的解决方案
-
你有没有试过写
animalRepo.save(dog)?我用过没问题。 -
啊抱歉,现在我明白了。我的错。愚蠢的错误,忘记它:p
标签: java hibernate jpa persistence