У меня есть 2 таблицы: Order [OrderId(PK), OrderShipmentCode, ...]
и Shipment[ShipmentId(PK), ShipmentCode, ...]
.
В классе Order
я объявил shipment
поле следующим образом:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "OrderShipmentCode", referencedColumnName = "ShipmentCode", insertable = false, updatable = false, nullable = false)
private Shipment shipment;
Когда я получаю список Order
, загружается shipment
(я видел много отдельных запросов SELECT). Но я хочу, чтобы shipment
был ленивым загруженным, а не с Order
.
Для других таблиц, если ссылочный столбец является первичным ключом, результаты будут такими же ожидаемыми (используется Lazy-load). В моем случае ShipmentCode
не является основным ключом таблицы shipment
, а ленивая загрузка не используется Hibernate.
Не могли бы вы показать мне, как достичь этой цели?
EDIT: Код запроса выглядит следующим образом:
Criteria criteria = HibernateUtil.getSessionFactory().getCurrentSession().createCriteria(Order.class);
List result = criteria.list();
SQL-запросы: 1 инструкция SELECT для таблицы Order
и куча инструкции SELECT для shipment