当在hibernate中使用JPA需要映射一对一关系时,@GenericGenerator注解是hibernate特有的注解。
@GenericGenerator(name = "generator", strategy = "foreign",
parameters = @Parameter(name = "property", value = "stock"))
@Id
@GeneratedValue(generator = "generator")
int id;
既然使用JPA规范的最佳实践是使用JPA规范,那么在JPA中没有类似于hibernate中的@GenericGenerator的注释吗?
发布于 2015-05-03 15:42:12
有,它在hibernate documentation中有描述
最后,您可以要求Hibernate从另一个关联实体复制标识符。在Hibernate的行话中,它被称为外部生成器,但JPA映射读起来更好,并受到鼓励。
@Entity
class MedicalHistory implements Serializable {
@Id @OneToOne
@JoinColumn(name = "person_id")
Person patient;
}
@Entity
public class Person implements Serializable {
@Id @GeneratedValue Integer id;
}
或替代方案
@Entity
class MedicalHistory implements Serializable {
@Id Integer id;
@MapsId @OneToOne
@JoinColumn(name = "patient_id")
Person patient;
}
@Entity
class Person {
@Id @GeneratedValue Integer id;
}
https://stackoverflow.com/questions/30010541
复制相似问题