问题描述
我对所有实体都使用基本实体类.它映射到包含所有实体共享的列的表.
I use a base entity class for all my entities. It maps to a table that contains columns shared by all entities.
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
@DiscriminatorColumn(name="entpcd", discriminatorType=DiscriminatorType.STRING)
@Table(name="enrg")
public abstract class BaseEntity
@Id
@Column(name="enid")
private String entityId=null;
我有一个表示Person的实体类,该实体类映射到其自己的表.
And I have an entity class that represents a Person, mapped to its own table.
@Entity
@DiscriminatorValue("PN")
@Table(name="pn")
public class Person extends BaseEntity
ENRG表结构
enid, col2, col3
PN表结构
pnid, col2 col3
在检索Person时,Hibernate尝试在enrg.enid=pn.enid
上进行联接失败.如何在Person中覆盖id映射以在enrg.enid=pn.pnid
上加入Hibernate?
While retrieving a Person, Hibernate fails trying to do a join on enrg.enid=pn.enid
. How do I override id mapping in Person to have Hibernate join on enrg.enid=pn.pnid
?
推荐答案
@PrimaryKeyJoinColumn(name="pnid")
解决了该问题.
根据我的阅读,Hibernate在id列上出现@AttributeOverride
的问题.更多-> https://forum.hibernate.org/viewtopic.php? f = 1& t = 990510
From what I'm reading, Hibernate is having issues with @AttributeOverride
on id columns. More -> https://forum.hibernate.org/viewtopic.php?f=1&t=990510
这篇关于如何覆盖JPA实体ID列?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!