2015-08-06 6 views
5

devo un'entità che contiene un List che viene in tal modo lazy caricato di default:Come forzare il carico di caricamento con CrudRepository nei dati di primavera?

interface MyEntityRepository extends CrudRepository<MyEntity, Long> { 

} 

@Entity 
public class MyEntity { 
    @Id 
    private Long id; 

    @OneToMany(mappedBy = "bar") //lazy by default 
    private List<Bar> bars; 
} 

@Entity 
public class Bar { 
    //some more 
} 

Domanda: Come posso forzare eager loading durante l'esecuzione repository.findOne(id)?

+1

'@OneToMany (fetch = FetchType.EAGER)' sarà questo aiuto? – Jebil

+1

So che posso forzare la modalità 'eager' in questo modo. Ma voglio attenermi al default "pigro" e forzare semplicemente tutti gli elenchi su una selezione specifica. – membersound

+0

Bene, se si utilizzano i criteri in DAO, è possibile forzare il tipo di recupero tramite 'criteria.setFetchMode (" barre ", FetchMode.EAGER)' – Jebil

risposta

2

avevo bisogno anche questo e come io chiamo la dao all'interno di un oggetto servizio che è insise una transazione io chiamo chiamare il metodo get in modo non fa eccezione e sono stato in grado di recuperare i record. Qualcosa di simile a Java 8:

public ProductEntity findProduct(int id) { 
    ProductEntity p = productRepository.findOne(id); 
    p.getPresentations().stream().count(); 
    return p; 
} 

p.getPresentations().stream().count(); costringerà l'operazione di recupero, so che non è un modo pulito per farlo, ma ottiene il lavoro fatto nel frattempo

3

è possibile forzare desiderosi prendere scrittura query personalizzata HQL con left join fetch, ad esempio:

interface MyEntityRepository extends CrudRepository<MyEntity, Long> { 
    @Query("select e from MyEntity e left join fetch e.bar b where e.id = ?1") 
    MyEntity findOne(long id) 
} 
-3

Cambia la mappatura da

@OneToMany(mappedBy = "bar") //lazy by default 

Per

@OneToMany(mappedBy = "bar", fetch = FetchType.EAGER) //lazy by default 
+0

Per citare me stesso: "So che posso forzare la modalità desiderosa in questo modo, ma voglio attenermi al default pigro e forzare semplicemente [...] una selezione specifica" – membersound