2012-10-15 8 views
5

Ho un'applicazione Spring Roo con GWT. Sul lato server Ive ha ottenuto interfacce JpaRepository semplici per tutti gli enti come:Gli oggetti nidificati non sono stati salvati da Spring JpaRepository

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

C'è una classe MyEntity che ha una relazione uno-a-uno a una classe MyOtherEntity. Quando chiamo il mio soggetto-service persistono metodo

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

solo l'oggetto myEntity verrà salvato. Tutti gli oggetti secondari di MyEntity vengono ignorati. L'unico modo per salvare l'oggetto myEntity insieme all'oggetto myOtherEntity sta chiamando

myOtherEntityRepository.save(myOtherEntity); 

prima che il codice di cui sopra. Quindi c'è un modo più elegante per salvare automaticamente i sub oggetti con l'interfaccia JpaRepository?

risposta

10

Non vedevo l'implementazione della codifica. Ma, penso, basta usare CascadeType in JPA. Riferimento JPA CascadeType.

Provare come indicato di seguito.

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

Per Recursiivce MyEntity relazione

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

che funziona per me! Grazie –