Моя проблема связана с отображением коллекций с помощью аннотаций JPA в Hibernate. Скажем, у меня есть сущность:
@Entity
@Table(name="orders")
class Order {
@Id @GeneratedId private Long id;
@OneToMany(fetch=FetchType.EAGER, targetEntity=Item.class)
@JoinColumn(name="order_id")
private List<Item> items;
/* getters setters */
}
и мой предмет:
@Entity
@Table(name="items")
class Item {
@Id @GeneratedId private Long id;
@ManyToOne
@JoinColumn(name="order_id")
private Order order;
/* getters setters */
}
order_id - это внешний ключ в таблице товаров, который ссылается на заказ с этим идентификатором.
если у меня есть 3 элемента для заказа в таблице элементов, я получаю объект с тремя заказами вместо одного с тремя элементами в коллекции элементов, если я запрашиваю с помощью:
Query query = query.createQuery("from Order o where o.id=:id");
query.setLong("id", 1234L);
List<Order> orders = query.list();
query.list () возвращает три экземпляра заказа.
Как я могу сопоставить такие базовые коллекции с hibernate 3.5.x? Результат list () похож на результат, возвращаемый оператором SQL в БД. Как я могу сказать Hibernate / JPA, что он должен вернуть один объект заказа с тремя элементами в коллекции?
Спасибо всем
ОБНОВЛЕНИЕ: ассоциация является однонаправленной. это означает, что в таблице заказов нет информации о товарах.