Ho 2 tabelle: Order [OrderId(PK), OrderShipmentCode, ...]
e Shipment[ShipmentId(PK), ShipmentCode, ...]
.Hibernate: @ManyToOne (fetch = FetchType.LAZY) non funziona sulla colonna di riferimento non chiave primaria
In Order
classe, ho dichiarato shipment
campo come segue:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "OrderShipmentCode", referencedColumnName = "ShipmentCode", insertable = false, updatable = false, nullable = false)
private Shipment shipment;
Quando ho l'elenco dei Order
, il Shipment
è anche caricato (ho visto molte query SELECT separati). Ma voglio che lo Shipment
sia pigro, non da caricare insieme a Order
.
Per altre tabelle, se la colonna di riferimento è la chiave primaria, i risultati sono come previsto (viene utilizzato il caricamento lento). Nel mio caso, ShipmentCode
non è la chiave primaria della tabella Shipment
e il caricamento lento non viene utilizzato da Ibernazione.
Puoi mostrarmi come raggiungere questo obiettivo?
EDIT: Il codice Query è come muggito: query
Criteria criteria = HibernateUtil.getSessionFactory().getCurrentSession().createCriteria(Order.class);
List result = criteria.list();
SQL sono: 1 SELECT per Order
tavolo e un mazzo di un'istruzione SELECT per Shipment
si può mostrare il codice per criteri o query di essere licenziato? – RAS