为了账号安全,请及时绑定邮箱和手机立即绑定

JPA休眠一对一关系

JPA休眠一对一关系

MM们 2019-11-25 14:56:35
我有一对一的关系,但是hibernatetool在生成模式时抱怨。这是显示问题的示例:@Entitypublic class Person {    @Id    public int id;    @OneToOne    public OtherInfo otherInfo;    rest of attributes ...}人与OtherInfo具有一对一关系:@Entitypublic class OtherInfo {    @Id    @OneToOne(mappedBy="otherInfo")    public Person person;    rest of attributes ...}人是OtherInfo的拥有方。OtherInfo是拥有方,因此person用于mappedBy在Person中指定属性名称“ otherInfo”。使用hibernatetool生成数据库架构时出现以下错误:org.hibernate.MappingException: Could not determine type for: Person, at table: OtherInfo, for columns: [org.hibernate.mapping.Column(person)]        at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:292)        at org.hibernate.mapping.SimpleValue.createIdentifierGenerator(SimpleValue.java:175)        at org.hibernate.cfg.Configuration.iterateGenerators(Configuration.java:743)        at org.hibernate.cfg.Configuration.generateDropSchemaScript(Configuration.java:854)        at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:128)        ...知道为什么吗?我是在做错什么还是这是Hibernate错误?
查看完整描述

3 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

使用JPA 2.0 @MapsId注释而不是Hibernate的GenericGenerator,这也应该起作用:


@Entity

public class Person {


    @Id

    @GeneratedValue

    public int id;


    @OneToOne

    @PrimaryKeyJoinColumn

    public OtherInfo otherInfo;


    rest of attributes ...

}


@Entity

public class OtherInfo {


    @Id

    public int id;


    @MapsId

    @OneToOne

    @JoinColumn(name="id")

    public Person person;


    rest of attributes ...

}

有关详细信息,请参见Hibernate 4.1文档中的第5.1.2.2.7节。


查看完整回答
反对 回复 2019-11-25
  • 3 回答
  • 0 关注
  • 386 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信