Я пытаюсь использовать собственный запрос JPA, но не получаю ожидаемого результата.
Я испробовал как ленивую, так и нетерпеливую стратегию извлечения, но проблема одна и та же.
public class OfferDetailEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "prod_spec_code")
private String productSpecificationCode;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "offer_detail_id")
private Collection<ServiceEntity> services;
}
public class ServiceEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "service_name")
private String serviceName;
@Column(name = "service_id")
private Long serviceId;
}
ИСобственный запрос, который генерируется динамически:
select * from offer_detail_entity detail inner join service_entity service
on service.offer_detail_id=detail.id where prod_spec_code = 'AT52476'
and service_name = 'Airtel'
. Предоставляет все службы, связанные с OfferDetailEntity
. Но ожидаемый сервис только один, имеющий service_name = 'Airtel'
. Я попытался отладить и обнаружил, что Hibernate выполняет еще один запрос. Я не уверен, зачем hibernate снова нужны службы, когда я уже включился в собственный запрос. Дополнительный запрос, сгенерированный hibernate
select
services0_.offer_detail_id as offe4_11_0_,
services0_.id as id1_11_0_,
services0_.id as id1_11_1_,
services0_.service_id as service_2_11_1_,
services0_.service_name as service_3_11_1_
from
offer_service services0_
where`enter code here`
services0_.offer_detail_id=?
Пожалуйста, предоставьте мне решение.