Spring JpaRepository尚未保存嵌套对象

Ton*_*ulk 8 java spring repository spring-roo spring-data

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

@Repository
public interface MyEntityRepository extends JpaSpecificationExecutor<MyEntity>, JpaRepository<MyEntity, Long> {
}
Run Code Online (Sandbox Code Playgroud)

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

public void saveMyEntity (MyEntity myEntity) {
    myEntityRepository.save(myEntity);
}
Run Code Online (Sandbox Code Playgroud)

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

    myOtherEntityRepository.save(myOtherEntity);
Run Code Online (Sandbox Code Playgroud)

在上面的代码之前.那么使用JpaRepository接口自动保存子对象有更优雅的方法吗?

Zaw*_* oo 17

我没有看到你的编码实现.但是,我认为,它只是需要使用CascadeTypeJPA.JPA参考CascadeType.

请尝试以下方式.

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

对于Recursiivce MyEntity关系

public class MyEntity {
    @OneToOne(cascade=CascadeType.PERSIST) <or> @OneToOne(cascade=CascadeType.ALL) <-- for all operation
    @JoinColumn(name = "YOUR-ID")
    private MyEntity myEntity ;
}
Run Code Online (Sandbox Code Playgroud)