1

この問題の解決にご協力ください。解決策をグーグルで検索しようとしましたが、解決策が見つかりませんでした。

テーブル構造

テーブル:カタログ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;
    }
}

}

コードは挿入操作では問題なく機能しますが、カタログを更新すると、子テーブルのすべてのエントリが削除および再挿入されます。

これに対する解決策はありますか?

4

0 に答える 0