我有3个表由JPA模型表示。
第一个:
@Entity
@Table(name = "DECISION")
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class Decision {
@Id
private Long id;
}
字符串
下一个类扩展Decision:
@Entity
@Table(name = "SPECIFIC_DECISION")
public class SpecificDecision extends Decision {
@OneToOne
@JoinColumn(name = "PERSON_ID")
private Person person;
}
型
最后一个是Person,它只是一个简单的包含个人信息的实体类。
现在,当我试图从数据库中选择所有决策时,我得到一个错误信息,即持久化单元与数据库模式不一致,因为列DECISION.PERSON_ID不存在,而我在SPECIFIC_DECISION表中确实有它,这就是我在JPA模型中Map它的方式。
更有趣的是,如果SpecificDecision中没有关系,只有简单的NUMBER和VARCHAR字段,那么一切都正常。
我做错了什么?
2条答案
按热度按时间s4n0splo1#
看来我的问题有解决办法了默认情况下,JPA在基表中查找连接列。要更改此行为,需要JoinColumn注解中的属性“table”:
字符串
问题解决了。
brqmpdu12#
你没有定义一个鉴别器列,我不确定这是什么原因导致你的问题,但根据JPA规范,你总是应该使用鉴别器时,使用一个JOINED策略,即使一些提供商支持,你不。Link for more info about discriminator