2016-03-19 7 views
1

私は、とSkuAvailabilityの2つのクラス間でOneToOneの関係を構築しています。以下のコードは、そのorg.hibernate.MappingException:OneToOneマッピング用のエンティティのマッピングで繰り返し列

SkuImpl.java

@Entity 
public class SkuImpl implements Sku { 
    @OneToOne(targetEntity=SkuAvailabilityImpl.class) 
    protected SkuAvailability totalSku; 
    //setter and getters 
} 

SkuAvailabilityImpl.java

@Entity 
public class SkuAvailabilityImpl implements SkuAvailability{ 
    @OneToOne(optional=true,targetEntity=SkuImpl.class,cascade=CascadeType.ALL) 
    @JoinColumn(name="SKU_ID") 
    protected Sku sku; 
    //setter and getters 
} 

私が言った例外を取得し、それを展開していないのGlassFishにアプリケーションをデプロイしてみてください

Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: 
SkuAvailabilityImpl column: SKU_ID 
(should be mapped with insert="false" update="false") 

この例外を解決するにはどうすればよいですか?

答えて

0

は、このような@JoinColumnを書くようにしてください:

@OneToOne(optional=true,targetEntity=SkuImpl.class,cascade=CascadeType.ALL) 
@JoinColumn(name="SKU_ID",referencedColumnName="someNameOfColumnId") 
protected Sku sku; 

referencedColumnNameSkuImplクラスの列IDです。

以下のコードは不要romveです:

@OneToOne(targetEntity=SkuAvailabilityImpl.class) 
    protected SkuAvailability totalSku; 
+0

私は「SkuAvailability」テーブルでは、これらのクラスのための2つのテーブルを持っている私は、列SKU_IDをfkをしていると私はコード '名=「SKU_ID」に変更、referencedColumnNameと=」 SKU_ID "、同じエラーを示しています。 –

+0

私はこれを 'name =" SKU_AVAILABILITY_ID "に変更しました、referencedColumnName =" SKU_ID "'は現在働いており、グラスフィッシュに配達されました –

関連する問題