首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用自定义ID生成器与JPA规范建立一对一关系

使用自定义ID生成器与JPA规范建立一对一关系
EN

Stack Overflow用户
提问于 2015-05-03 13:27:48
回答 1查看 353关注 0票数 0

当在hibernate中使用JPA需要映射一对一关系时,@GenericGenerator注解是hibernate特有的注解。

代码语言:javascript
运行
复制
    @GenericGenerator(name = "generator", strategy = "foreign", 
            parameters = @Parameter(name = "property", value = "stock"))
    @Id
    @GeneratedValue(generator = "generator")
    int id;

既然使用JPA规范的最佳实践是使用JPA规范,那么在JPA中没有类似于hibernate中的@GenericGenerator的注释吗?

EN

回答 1

Stack Overflow用户

发布于 2015-05-03 15:42:12

有,它在hibernate documentation中有描述

最后,您可以要求Hibernate从另一个关联实体复制标识符。在Hibernate的行话中,它被称为外部生成器,但JPA映射读起来更好,并受到鼓励。

代码语言:javascript
运行
复制
@Entity
class MedicalHistory implements Serializable {
  @Id @OneToOne
  @JoinColumn(name = "person_id")
  Person patient;
}

@Entity
public class Person implements Serializable {
  @Id @GeneratedValue Integer id;
}

或替代方案

代码语言:javascript
运行
复制
@Entity
class MedicalHistory implements Serializable {
  @Id Integer id;

  @MapsId @OneToOne
  @JoinColumn(name = "patient_id")
  Person patient;
}

@Entity
class Person {
  @Id @GeneratedValue Integer id;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30010541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档