Странное поведение собственного запроса JPA - PullRequest
1 голос
/ 11 ноября 2019

Я пытаюсь использовать собственный запрос 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=?

Пожалуйста, предоставьте мне решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...