2010-11-18 13 views
5

Ho la seguente struttura di dati.JPA @OneToMany e @ManyToOne: il riferimento posteriore è nullo

@Entity 
public class Device extends AbstractEntity implements Serializable{ 
    private int id; 
    //... 
    private List<Item> items; 

    @OneToMany(fetch=FetchType.EAGER) 
    public List<Item> getItems() { 
return configurationItems; 
    } 
} 

ogni voce contiene di nuovo riferimento al dispositivo:

class Item { 
    private Device; 
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}) 
public Device getDevice() { 
    return device; 
} 
} 

posso creare periferiche, aggiungere elementi e salvare tutto questo. L'I può recuperare gli oggetti dal DB e tutto funziona tranne il riferimento al dispositivo in possesso di quell'elemento.

E non importa come faccio leggere gli articoli: 1. Dispositivo di lettura con tutti gli elementi associati 2. Articoli lettura

Il riferimento dispositivo è sempre nullo. Immagino che qualcosa non funzioni con la mia annotazione @ManyToOne.

Sto utilizzando ibernazione e molla, implementando DAO sottoclasse HibernateDaoSupport.

Ecco l'esempio di codice che recupera tutti gli articoli:

getHibernateTemplate().loadAll(Item.class) 

risposta

7

Dal momento che si dispone di un bidirezionale relathionship uno-a-molti, è necessario utilizzare mappedBy:

@OneToMany(fetch=FetchType.EAGER, mappedBy = "device") 
public List<Item> getItems() { 
    return configurationItems; 
} 

Vedi anche:

+0

Grazie mille. Credo che funzionerà ora. – AlexR

Problemi correlati