Spring的JpaRepository未保存嵌套对象。

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接口自动保存子对象?

1个回答

26

我不知道你的实现细节。但是,我认为只需要在JPA中使用CascadeType就可以了。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 ;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接