11

GWT を使用した Spring Roo アプリケーションがあります。サーバー側では、次のようなすべてのエンティティに対して単純な JpaRepository インターフェイスを用意しています。

@Repository
public interface MyEntityRepository extends JpaSpecificationExecutor<MyEntity>, JpaRepository<MyEntity, Long> {
}

MyOtherEntity クラスと 1 対 1 の関係を持つ MyEntity クラスがあります。エンティティ サービスの永続化メソッドを呼び出すと、

public void saveMyEntity (MyEntity myEntity) {
    myEntityRepository.save(myEntity);
}

myEntity オブジェクトのみが保存されます。MyEntity のすべてのサブオブジェクトは無視されます。myEntity オブジェクトを myOtherEntity オブジェクトと共に保存する唯一の方法は、

    myOtherEntityRepository.save(myOtherEntity);

上記のコードの前に。JpaRepository インターフェースでサブオブジェクトを自動的に保存するよりエレガントな方法はありますか?

4

1 に答える 1

23

実装の詳細がわかりません。しかし、私はそれを使用する必要があると思いCascadeTypeますJPA. JPA 参照CascadeType

以下のようにしてみてください。

public class MyEntity {
    @OneToOne(cascade=CascadeType.PERSIST) <or> @OneToOne(cascade=CascadeType.ALL) <-- for all operation
    @JoinColumn(name = "YOUR-ID")
    private MyOtherEntity myOtherEntity ;
}

再帰的な MyEntity リレーションシップの場合

public class MyEntity {
    @OneToOne(cascade=CascadeType.PERSIST) <or> @OneToOne(cascade=CascadeType.ALL) <-- for all operation
    @JoinColumn(name = "YOUR-ID")
    private MyEntity myEntity ;
}
于 2012-10-15T14:41:56.813 に答える