2014-02-21 111 views
0

我有一個MySQL數據庫有兩個表,contactsaddresses。表addresses包含與contact表連接的類型爲大整數的列contactid休眠:在@ManyToOne關係中重命名自動生成的Id

我在Hibernate中使用雙向OneToMany - ManyToOne關係具有以下實體。問題是@ManyToOne關係在我的數據庫中創建另一個類型爲整數的contact_id列。我想用已有的contactid列,而不是有contact_id,所以我想我應該自動生成的contact_id列重命名爲contactid,但我不知道這是可能的...

有什麼辦法來解決這不需要修改數據庫?

在此先感謝。

@Entity 
@Table(name="contacts") 
public class Contact implements Serializable { 

    @Id 
    @Column(name="id") 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    private Integer id; 

    @Column(name="name") 
    private String name; 

    @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER, mappedBy="contact") 
    private List<Address> addresses= new ArrayList<Address>(); 

    // getters and setters 
} 


@Entity 
@Table(name="addresses") 
public class Address implements Serializable { 

    @Id 
    @Column(name="id") 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    private long id; 

    @Column(name="street") 
    private String street; 

    @Column(name="postalcode") 
    private String postalcode; 

    @ManyToOne 
    private Contact contact; 

    // getters and setters 
} 

回答

1

您需要Address@JoinColumn(name = "id")與你一起@ManyToOne

通過將mappedBy添加到addresses您讓孩子擁有關係。當你提到JoinColumn時,你在說什麼是在DB中保存實際關係的列。

此外,你在談論contact_id,但我看不到你的映射。

+0

@JoinColumn註釋是我所需要的。 'contactid'是我想要映射的數據庫中已存在的列,@ManyToOne註釋的結果是'contact_id'自動生成的列。使用@JoinColumn(name =「contactid」)解決了這個問題。 –