11

我有一个带有 GWT 的 Spring Roo 应用程序。在服务器端,我为所有实体提供了简单的 JpaRepository 接口,例如:

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

有一个 MyEntity 类与 MyOtherEntity 类具有一对一的关系。当我调用我的实体服务持久方法时

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

只有 myEntity 对象将被保存。MyEntity 的所有子对象都被忽略。将 myEntity 对象与 myOtherEntity 对象一起保存的唯一方法是调用

    myOtherEntityRepository.save(myOtherEntity);

在上面的代码之前。那么有没有更优雅的方式来使用 JpaRepository 接口自动保存子对象呢?

4

1 回答 1

23

我不知道你的实施细节。但是,我认为,它只需要使用CascadeTypein 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 回答