什么是JPA相当于Hibernate的外部id生成器?
<id column="PERSON_ID" name="id" type="java.lang.Long">
<generator class="foreign">
<param name="property">person</param>
</generator>
</id>
答案 0 :(得分:6)
AFAIK,JPA规范没有标准化外来ID生成器。在保存此实例之前,必须以编程方式正确设置PK值。
至于Hibernate,它有an extension annotation来启用foreign ID generator。如果您不介意,可以选择使用它:
@Id
@GeneratedValue(generator = "myForeignGenerator")
@org.hibernate.annotations.GenericGenerator(
name = "myForeignGenerator",
strategy = "foreign",
parameters = @Parameter(name = "property", value = "person")
)
@Column(name = "PERSON_ID")
private Long id;
答案 1 :(得分:0)
值得注意的是,JPA 2.0添加了一个可用于外键导入的@MappedBy注释。从克里斯蒂安的例子开始,并简要地从肯·陈的无聊:
@Id
@Column
private Long personId;
@ManyToOne
@JoinColumn(name = "personId")
@MapsId
private Person person;
我知道这个问题来自很久以前,但是因为我在解决相同的问题然后挖出@MappedBy
时偶然发现了它,我想我会把它添加到遇到此问题的任何人身上后面。