[英]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.