JPQL-запрос к хранилищу для не связанных объектов - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь сделать JPQL-запрос на @Query из репозитория (расширяет CrudRepository) для следующей структуры:

@Entity 
@Table(name="Campaign")
public class Campaign {

 @Id
 @GeneratedValue(strategy=GenerationType.AUTO)
 @Column(columnDefinition = "int(11)")
 private Long id; 
...
 private String displayName;
 private String smrtProject;
...}

и

@Entity 
@Table(name="CampaignFact")
public class CampaignFact{
 @Id
 @GeneratedValue(strategy=GenerationType.AUTO)
 @Column(columnDefinition = "int(11)")
 private Long id;

 @ManyToOne(fetch = FetchType.EAGER)
 @JoinColumn(name = "campaignId")
 private Campaign campaign;

 @ManyToOne(fetch = FetchType.EAGER)
 @JoinColumn(name = "callCenterId")
 private CallCenter callCenter;
...}

Что я пытаюсьзапрос извлекает все кампании, связанные с центром обработки вызовов, по callCenterId.

До сих пор я использую собственный запрос (MySql), который возобновляется, что я пытаюсь сделать:

@Query(value = "SELECT c.* FROM CampaignFact cf Inner JOIN Campaign c ON c.id = cf.campaignId WHERE cf.callCenterId = ?1", nativeQuery = true)
List<Campaign> findByCallCenterIdNative(Long callCenterId);

Итаквозобновить, как можно переписать этот SQL в JPQL?PS: я работаю в этом хранилище:

public interface CampaignRepository extends CrudRepository<Campaign, Long> 

1 Ответ

0 голосов
/ 25 мая 2018

Так как вы хотите CampaignFact, поэтому вам нужно иметь CampaignFactRepository, и определение метода будет выглядеть следующим образом:

List<CampaignFact> findByCampaign_idAndCallCenter_id(Long callCenterId);

Я не запускал его, так как у меня нет БД, но я создал правильное имя методадолжен сделать правильный вызов SQL.Ссылка Spring Docs

Также вы можете проверить Spring Data JPA Tutorial

...