JPA 相当于 Hibernate 的外部 id 生成器是什么?
<id column="PERSON_ID" name="id" type="java.lang.Long">
<generator class="foreign">
<param name="property">person</param>
</generator>
</id>
AFAIK,JPA 规范没有标准化外国 ID 生成器。在保存此实例之前,您必须以编程方式正确设置 PK 值。
至于 Hibernate,它有一个扩展注释来启用外部 ID 生成器。如果您不介意,您可以选择使用它:
@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;
对于它的价值,JPA 2.0 添加了一个可用于外键导入的 @MappedBy 注释。从 Christian 的例子开始,从 Ken Chan 的例子开始无聊:
@Id
@Column
private Long personId;
@ManyToOne
@JoinColumn(name = "personId")
@MapsId
private Person person;
我知道这个问题是很久以前的,但是由于我在解决相同的问题时偶然发现了它然后挖出来@MappedBy
,我想我会为以后遇到这个问题的任何人添加它。