2010-11-18 3 views
5

У меня есть следующая структура данных.JPA @OneToMany и @ManyToOne: обратная ссылка:

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

каждый элемент содержит обратно ссылку на устройство:

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

Я могу создать устройство, добавлять элементы и сохранить все это. Я могу получить объекты из БД, и все работает, кроме ссылки на устройство, которое хранится в элементе.

И это не имеет значения, как я читаю пункты: 1. Устройство для чтения всех соответствующих пунктов 2. Прочитанные

Ссылка устройства всегда нуль. Я думаю, что что-то не так с моей аннотацией @ManyToOne.

Я использую hibernate и spring, реализуя DAO путем подкласса HibernateDaoSupport.

Вот пример кода, который извлекает все элементы:

getHibernateTemplate().loadAll(Item.class) 

ответ

7

Поскольку у вас есть двунаправленный один-ко-многим relathionship, вам нужно использовать mappedBy:

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

Смотри также:

+0

Большое спасибо. Я верю, что это сработает. – AlexR

Смежные вопросы