【问题标题】:hibernate. OneToOne mapping in database冬眠。数据库中的 OneToOne 映射
【发布时间】:2015-01-21 05:55:26
【问题描述】:

我有以下映射:

@Entity
@Table(name="terminal_user")
public class TerminalUser {

    @OneToMany(mappedBy="user",fetch = FetchType.LAZY)
    private Set<UserContent> userContentSet;
    ....
}

@Entity
@Table(name="user_content")
public class UserContent {

    @ManyToOne
    @JoinColumn(name = "user_id")
    TerminalUser user;

    @OneToOne(mappedBy = "userContent")
    Content content;
    ...
}

@Entity
@Table(name = "content")
public class Content {
@OneToOne
    @JoinColumn(name = "user_content_id")
    UserContent userContent;
    ....
}

设置hibernate.hbm2ddl.auto后创建

我看到以下数据库图:

对我来说,表 user_contentcontent 的关系不是一对一的。

看起来和terminal_useruser_content的关系一样,是一对多

我做错了什么?

【问题讨论】:

  • 我知道这并不能回答你的问题,但你为什么不直接使用逆向工程工具呢?它让生活更轻松!准备好你的数据库然后“魔法”!
  • 比如sybase power Designer?
  • 简单的休眠工具从你的数据库到代码。您可以使用 MySQL 工作台或任何您想使用的工具,从图表转到数据库。我总是这样。我从不编写自己的映射。我只是添加了hibernate不会自动生成的内容。

标签: java hibernate jpa mapping one-to-one


【解决方案1】:

一个独特的约束会有所作为:

@Entity
@Table(name = "content")
public class Content {
@OneToOne
    @JoinColumn(name = "user_content_id", unique=true)
    UserContent userContent;
    ....
}

【讨论】:

    猜你喜欢
    • 2014-12-27
    • 2014-03-12
    • 2017-11-13
    • 2016-03-18
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多