2014-11-23 160 views
0

我有以下映射:休眠。 OneToOne映射数据库

@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后创建

我看到下面的数据库图表:

enter image description here

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

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

做什么,我错了吗?

+0

我知道这并不能回答你的问题,但你为什么不只是使用逆向工程工具?它让生活变得更加轻松!让你的数据库准备好,然后“魔术”! – 2014-11-23 13:20:08

+0

例如sybase电源设计师? – gstackoverflow 2014-11-23 13:34:18

+0

只需要从数据库到代码的hibernate工具。你可以使用MySQL工作台或任何你想使用的工具,从图表到数据库。这就是我一直这样做的。我从来没有写我自己的映射。我只是添加什么hibernate不会自动生成。 – 2014-11-23 20:22:53

回答

0

一个独特的约束会使得不同:

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