2010-11-18 48 views
5

Tengo la siguiente estructura de datos.JPA @OneToMany y @ManyToOne: la referencia es nula

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

cada elemento contiene volver referencia a Dispositivo:

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

puedo crear el dispositivo, añadir elementos y guardar todo esto. Puedo recuperar los objetos de DB y todo funciona, excepto la referencia al dispositivo que contiene ese elemento.

Y no importa cómo hago para leer los artículos: 1. dispositivo de lectura con todos los elementos asociados 2. artículos de lectura

La referencia de dispositivos siempre es nula. Supongo que algo está mal con mi anotación @ManyToOne.

estoy usando Hibernate y la primavera, la aplicación de DAO subclasificando HibernateDaoSupport.

Aquí está el ejemplo de código que recupera todos los elementos:

getHibernateTemplate().loadAll(Item.class) 

Respuesta

7

Puesto que usted tiene un bidireccional relathionship uno-a-muchos, es necesario utilizar mappedBy:

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

Ver también:

+0

Muchas gracias. Creo que funcionará ahora. – AlexR

Cuestiones relacionadas