1
我正在開發一個使用JPA 2.0實體,Hibernate 3.6.2和Spring 3的示例Web應用程序。該示例包含一對一關係中的兩個表,父實體是Client而孩子是地址,地址中的PK引用客戶表(識別關係)。實體不匹配中的共享PK
運行JUnit測試中,我注意到一個奇特的問題,這兩個實體,它是子實體與(parentId的+ 1)仍然存在的問題,我的對應關係如下:
@Entity
public class Client implements Serializable{
private Long clientId;
private Address address;
//Other fields
@Id
@GeneratedValue
public Long getClientId(){return this.clientId;}
public void setClientId(Long id){this.clientId=id;}
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name="clientid",referencedColumnName="fk_clientid")
public Address getAddress(){return this.address;}
}
和子實體:
@Entity
public class Address implements Serializable{
private Long fkClientId;
private Client client;
//Other fields
@Id
@GeneratedValue
public Long getFkClientId(){return this.fkClientId;}
public void setFkClientId(Long id){this.fkClientId=id;}
@OneToOne(mappedBy="address")
public Client getClient(){return this.client;}
}
在我的測試方法,我用他們制定者同時連結對象,但經過堅持實體和執行行:
assertEquals(client.getClientId, client.getAddress().getFkClientId);
測試失敗,異常
java.lang.AssertionError: expected:<654> but was:<655>
我readed類似的問題和存在的問題,但幾乎所有的人都從JPA 1.0,它supossed在JPA2.0共享密鑰自動分配。我錯過了什麼?
非常感謝!我對這種關係的擁有方面感到困惑,以及它是如何在JPA2.0規範中實現的 – Jairo 2011-04-20 21:17:18