更新父实体会插入新条目

时间:2017-07-29 11:53:20

标签: hibernate jpa inheritance hibernate-mapping

我有一个EndangeredFish实体,它使用JOINED继承类型扩展Fish实体。

一段时间后,我们要将Fish更新为EndangeredFishnumberOfSpeciesLeft字段)。

Fish fish = fishRepository.findOne(fishId);
EndangeredFish endangeredFish = fishToEndangeredFish.apply(fish);

endangeredFish.setNumberOfSpeciesLeft(500);
endangeredFish.setId(fishId);

Fish updatedFish = fishRepository.save(endangeredFish);

这会在ENDANGERED_FISH表中插入一个新条目(如预期的那样),但FISH表中插入一个我不希望的新条目

我想知道我的案例是否适合实体继承,或者我应该在开始时使用一个FISH null字段并稍后更新。

numbOfSpeciesLeft

1 个答案:

答案 0 :(得分:0)

  

我想知道我的案例是否适合实体继承,或者我应该在开始时使用一个带有null numbOfSpeciesLeft字段的FISH表并稍后更新。

不,它不适合继承。如果你的实例基本上应该在其生命周期中改变它的类型,那么你使用的是继承错误。

null的{​​{1}}值听起来像是一个合理的开始。如果您有更多信息需要跟踪,它可能演变为numbOfSpeciesLeft的可选引用。这可以映射为一对一的关系或嵌入式。