2010-11-18 10 views
5

Ich habe die folgende Datenstruktur.JPA @ OneToMany und @ManyToOne: zurück Referenz ist Null

@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; 
    } 
} 

jedes Element enthält Verweis auf Geräte zurück:

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

I-Device erstellen, Elemente hinzufügen und alles speichern. Die Ich kann die Objekte aus DB abrufen und alles funktioniert außer dem Verweis auf Gerät, das Element enthält.

Und es spielt keine Rolle, wie kann ich die Artikel zu lesen: 1. Lesegerät mit allen zugehörigen Artikel 2. Lese Artikel

Die Gerätereferenz ist immer null. Ich vermute, dass etwas mit meiner Annotation @ManyToOne nicht stimmt.

Ich verwende Hibernate und Spring, Implementieren von DAO durch Unterklasse HibernateDaoSupport. Hier

ist das Codebeispiel, das alle Elemente abruft:

getHibernateTemplate().loadAll(Item.class) 

Antwort

7

Da Sie eine bidirektionale haben eine Eins-zu-viele relathionship, müssen Sie mappedBy verwenden:

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

Siehe auch:

+0

Vielen Dank. Ich glaube, es wird jetzt funktionieren. – AlexR

Verwandte Themen