簡體   English   中英

JPQL查詢存儲庫中的非相關實體

[英]JPQL Query on repository for non-related entities

我正在嘗試從存儲庫(擴展CrudRepository)的@Query上發出JPQL請求以獲取以下結構:

@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);

因此,要恢復,如何在JPQL中重新編寫此SQL? PS:我正在此存儲庫中工作:

public interface CampaignRepository extends CrudRepository<Campaign, Long> 

由於您需要CampaignFact因此您需要具有CampaignFactRepository ,方法定義將如下所示:

List<CampaignFact> findByCampaign_idAndCallCenter_id(Long callCenterId);

我沒有運行它,因為我沒有數據庫,但是創建正確的方法名稱應該進行正確的SQL調用。 參考Spring Docs

您也可以查看Spring Data JPA教程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM