2016-03-24 78 views
2

我有OneToOne關係三個實體類Product - >SkuImpl - >SkuAvailabilityImpl我只需要添加一個產品,所以記錄同時插入sku表到SkuAvailabilityExtra列處於休眠JPA OneToOne關係上添加db表

SkuImpl.java

@Entity 
public class SkuImpl implements Sku { 
    @OneToOne(targetEntity=SkuAvailabilityImpl.class, cascade={cascadeType.ALL},fetch=FetchType.EAGER) 
    @Cache(usage=CacheConcurrencyStrategy.READ_WRITE) 
    @LazyCollection(LazyCollectionOption.FALSE) 
    protected SkuAvailability totalSku; 
    //setter and getters 
} 

SkuAvailabilityImpl.java

@Entity 
public class SkuAvailabilityImpl implements SkuAvailability{ 
    @OneToOne(optional=true,targetEntity=SkuImpl.class) 
    @Cascade(value={org.hibernate.annotations.CascadeType.ALL}) 
    @JoinColumn(name="SKU_ID", referencedColumnName='SKU_ID',insertable=false,updatable=false) 
    @Cache(usage=CacheConcurrencyStrategy.READ_WRITE) 
    protected Sku sku; 
    //setter and getters 
} 

SKU數據庫表

SKU_ID | NAME | QUANTITY | SKU_AVAILABILITY_ID 
--------+--------+----------+-------------------- 
     |  |   | 

所有記錄都將很好,但這裏的問題是,一個額外的列與名稱totalSku_SKU_AVAILABILITY_ID如添加上述見下表

SKU_ID | NAME | QUANTITY | SKU_AVAILABILITY_ID |totalSku_SKU_AVAILABILITY_ID 
--------+--------+----------+-------------------- 
101  |product1| 200  |     | 503 

我嘗試刪除該列,但它正在重新創建。我不明白爲什麼這個專欄是添加任何人都可以幫助我如何阻止它?

+0

您尚未定義字段「SkuImpl.totalSku」的列名稱,因此它定義了它自己的列名稱。 @JoinColumn –

+0

@尼爾斯托克頓,非常感謝你@ @ JoinColumn'解決了我的問題, –

+0

很高興聽到它。添加爲答案,以便您可以接受它 –

回答

0

您尚未定義字段「SkuImpl.totalSku」的列名稱,因此它根據JPA規範定義來定義其自己的列名稱。 使用數據庫中的名稱添加@JoinColumn