2010-02-03 112 views
0

让@OneToOne成员包含@ForiegnKey注释是否合理?@OneToOne关系是否包含@ForiegnKey注释

@Entity 
class User { 

    @Id 
    @GeneratedValue(strategy = IDENTITY) 

    int id; 

    @OneToOne 
    @ForeignKey 
    @JoinColumn(name = "home_address_id", referencedColumnName = "id") 
    Address homeAddress; 

} 

@Entity 
class Address { 
    @Id 
    @GeneratedValue(strategy = IDENTITY) 
    int id; 
} 

回答

4

我不认为这是必要的,因为@OneToOne映射应该隐含创建该列的外键。另一方面,如果您认为这会帮助您和其他开发人员更容易理解代码并且不会造成任何问题,则可以将其留在那里。

但是,似乎ForeingKey注释是特定于hibernate的,OneToOne注释是Java Persistence API的一部分。这可能支持将其取出的想法。

+0

它似乎创建一个隐式的外键,如果我们删除注释。我正在使用@ForeignKey注释为外键提供一个用户友好的名称。我不确定这是否是自动创建的关键。感谢您的回答。 – Sam 2010-02-03 07:26:36