この問題の解決にご協力ください。解決策をグーグルで検索しようとしましたが、解決策が見つかりませんでした。
テーブル構造
テーブル:カタログcatalog_id(主キー)名
テーブル:Catalog_Locale catalog_id locale_idシーケンス複合キー(catalog_id、locale_id)
クラス
パブリッククラスカタログ{
@Id
@Column(name = "CATALOG_ID", nullable = false)
private String catalogId;
@Column(name = "NAME")
private String name;
@OneToMany(targetEntity = CatalogLocale.class,fetch=FetchType.LAZY)
@JoinColumn(name = "CHILD_CATALOG_ID", nullable = false)
@Cascade(value = {})
protected List<CatalogLocale> locales = new ArrayList<CatalogLocale>(10);
public void setCatalogId( String catalogId ){
this.catalogId = catalogId;
}
public void setName( String name ){
this.name = name;
}
public void setLocales( List<CatalogLocale> locales ){
this.locales = locales;
}
public void getCatalogId(){
return catalogId;
}
public void getName(){
return name;
}
public void getLocales(){
return locales;
}
}
パブリッククラスCatalogLocale{
@EmbeddedId
CatalogLocalePk catalogLocalePk;
@Column(name = "SEQUENCE")
private int sequence;
public void setCatalogLocalePk( CatalogLocalePk catalogLocalePk ){
this.catalogLocalePk = catalogLocalePk;
}
public void setSequence( int sequence ){
this.sequence = sequence;
}
public CatalogLocalePk getCatalogLocalePk(){
return catalogLocalePk;
}
public int getSequence(){
return sequence;
}
@Embeddable
public static class CatalogLocalePk{
@Column(name = "CATALOG_ID", nullable = false)
private String catalogId;
@Column(name = "LOCALE_ID", nullable = false)
private String localeId;
public CatalogLocalePk(){
}
public CatalogLocalePk( String catalogId, String localeId ){
this.catalogId = catalogId;
this.localeId = localeId;
}
public void setCatalogId( String catalogId ){
this.catalogId = catalogId;
}
public void setLocaleId( String localeId ){
this.localeId = localeId;
}
public String getCatalogId(){
return catalogId;
}
public String getLocaleId(){
return localeId;
}
}
}
コードは挿入操作では問題なく機能しますが、カタログを更新すると、子テーブルのすべてのエントリが削除および再挿入されます。
これに対する解決策はありますか?