2012-08-14 179 views
1

我已經從一本書的例子開始。這真的是一個虛擬導向的,我對這本書給出的代碼有問題。JPA JoinColumn不起作用

這是代碼;

@Entity 
public class Customer { 
@Id 
@GeneratedValue 
private Long id; 
private String firstName; 
private String lastName; 
private String email; 

@OneToOne (fetch = FetchType.LAZY, 
      cascade = {CascadeType.PERSIST, CascadeType.REMOVE}) 
@JoinColumn(name = "address_fk") 
private Address address; 
//getter, setter, Constructor 

- // -------------------------------------

@Entity 
public class Address { 
@Id @GeneratedValue(strategy = GenerationType.AUTO) 
private String id; 
private String city; 
private String street; 
private String number; 

在這裏,它抱怨JoinColumn註釋。它說沒有找到列address_fk。

這是IDE相關的問題?我錯過了什麼嗎?

編輯:尚未在數據庫中創建表格。我期待他們在DB自動被我的persistence.xml

<property name="eclipselink.ddl-generation" value="create-tables"/> 

回答

2

可以看出使用@JoinColumn批註指定國外列名是address_fk,而不是默認address_id是罰款。

什麼可能不工作是@GeneratedValue與字符串。根據規範,只有生成主鍵的整體類型是可移植的。

+0

一些它是如何抱怨JoinColumn。當我刪除它。問題解決了。老實說,現在比我之前選擇的更好。 – 2012-08-14 14:59:08

+0

我也將地址的ID類型更改爲Long。 – 2012-08-14 14:59:50