不能在JPA中使用策略TABLE_PER_CLASS使用标识列密钥生成?

n_g*_*n_g 5 inheritance jpa

这个问题与此主题中提到的问题有关.我在MySQL上使用JPA时也遇到了同样的问题.只有当我将生成策略更改为TABLE时,我才能解决它.

但问题是,这个问题背后的原因是什么以及为什么将策略更改为TABLE是解决方案(这在线程中仍然没有答案)?

Dat*_*eus 11

要通过继承层次结构(JPA需要)拥有唯一ID,显然不能使用TABLE_PER_CLASS和IDENTITY来执行此操作,因为IDENTITY可以在表中工作,并且继承层次结构中现在有多个"根"表.

例如,抽象基类"Base",以及子类"Sub1","Sub2","Sub3".所以你有实际的表"SUB1","SUB2","SUB3".因此,如果使用IDENTITY,那么当使用MySQL时,这将等同于列上的"自动增量".因此SUB1有它的id,SUB2有它的id,SUB3有它的id ......它们是独立的,因此可以在id中发生冲突...所以你不再在继承层次结构中有唯一的id.