2012-10-15 32 views
5

Tôi có một ứng dụng Spring Roo với GWT. Trên server-side Tôi đã có giao diện đơn giản JpaRepository cho tất cả các đơn vị như:Các đối tượng lồng nhau chưa được lưu bởi Spring JpaRepository

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

Có một lớp MyEntity mà có một mối quan hệ One-To-One để một lớp MyOtherEntity. Khi tôi gọi phương thức duy trì dịch vụ thực thể của mình

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

chỉ đối tượng myEntity mới được lưu. Tất cả các đối tượng phụ của MyEntity đều bị bỏ qua. Cách duy nhất để lưu đối tượng myEntity cùng với đối tượng myOtherEntity đang gọi

myOtherEntityRepository.save(myOtherEntity); 

trước mã trên. Vì vậy, có một cách thanh lịch hơn để tự động lưu các đối tượng phụ với giao diện JpaRepository?

Trả lời

10

Tôi không thấy triển khai mã của bạn. Nhưng, tôi nghĩ, nó chỉ cần sử dụng CascadeType trong JPA. Tham chiếu JPA CascadeType.

Hãy thử như sau.

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

Đối Recursiivce MyEntity Mối quan hệ

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

đó làm việc cho tôi! Cảm ơn bạn –

Các vấn đề liên quan