Учитывая сопоставленный суперкласс, подобный этому.
Мой запрос приводит к тому, что каждый из сопоставленных классов загружается JPA, как только выполняется getResultsList()
.
Я не обращаюсь кЕсть ли какие-либо свойства, связанные с Order или Vehicle, но они все загружаются сразу же?
@MappedSuperclass
public abstract class PimaOrderComponentORM implements Serializable, EntityWithPK<Long> {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns(@JoinColumn(name="PIMA_ORDER_ID", referencedColumnName="ID"))
private PimaOrderBE pimaOrder;
}
@MappedSuperclass
public abstract class PimaOrderORM implements Serializable, EntityWithPK<Long> {
@Id
@GeneratedValue(generator="SQ_PIMA_ORDER")
@SequenceGenerator(name="SQ_PIMA_ORDER", sequenceName="SQ_PIMA_ORDER", allocationSize=20)
@Column(name = "ID")
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns(@JoinColumn(name="VEHICLE_ID", referencedColumnName="ID"))
private VehicleBE vehicle;
}
Каждый класс имеет конкретную реализацию.
При выполнении этого запроса с использованием JPA
String esql = "SELECT p FROM PimaOrderComponentBE p WHERE p.pimaOrder.vehicle.id in :vehicles";
Query query = em
.createQuery(esql)
.setHint(QueryHints.JDBC_FETCH_SIZE, 1000)
.setParameter("vehicles", ids);
List<PimaOrderComponentBE> results = query.getResultList();
В этот момент выполняется 20-30 запросов, извлекающих все ленивые значения?Я поставил контрольные точки на все необходимые классы и не могу этого понять.