簡體   English   中英

如何在jpa查詢上傳遞參數?

[英]How to pass parameter on jpa query?

我有兩個實體,如SmsOutSmsIn 兩個實體之間的關系包含OneToMany ,其中smsIn.id主鍵smsOut.sms_in_id外鍵

現在我想在查詢上傳遞smsIn.mobileNumbersmsIn.smsText等參數

SELECT so FROM SmsOut so order by id desc

以下是我的數據庫圖表:

在此輸入圖像描述

編輯

以下是我的代碼:

String sql = "SELECT so FROM SmsOut so WHERE so.smsInId.mobileNumber =:mobileNumber AND so.smsInId.smsText =:smsText AND so.smsInId.shortCode =:shortCode between so.smsOutDate =:startDate and so.smsOutDate =:endDate order by id desc";
    Query query = em.createQuery(sql);
    query.setParameter("mobileNumber", mobileNumber);
    query.setParameter("smsText", smsText);
    query.setParameter("shortCode", shortCode);
    query.setParameter("smsOutDate", startDate);
    query.setParameter("smsOutDate", endDate);
    smsOutList = query.getResultList();

例外是:

SEVERE: line 1:188: expecting "and", found '='
java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: expecting "and", found '=' near line 1, column 188 [SELECT so FROM     com.f1soft.SMSC.entities.SmsOut so WHERE so.smsInId.mobileNumber =:mobileNumber AND so.smsInId.smsText =:smsText AND so.smsInId.shortCode =:shortCode between so.smsOutDate =:startDate and so.smsOutDate =:endDate order by id desc]
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:624)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:96)

請幫我。 謝謝

你沒有解釋SmsInSmsOut之間的JPA關系,所以我假設SmsOut有一個與id字段有關系的getSmsIn()

當你有一個EntityManager em ,你可以調用em.createQuery ,就像SQL prepare ,然后是setParameter

TypedQuery<SmsOut> q = em.createQuery("SELECT so FROM SmsOut so WHERE so.smsIn.mobileNumber = :number ORDER BY id DESC");
q.setParameter("number", "12345678");
List<SmsOut> results = q.getResultList();

有關可以指定參數的不同方法,請參閱Javadoc for Query

SELECT so FROM SmsOut so WHERE smsIn.mobileNumber = ? AND smsIn.smsText =? order by id desc

更換 ? 簽署合適的價值觀。

之間是問題:

between so.smsOutDate =:startDate and so.smsOutDate =:endDate 

嘗試

so.smsOutDate between  =:startDate and =:endDate 

如何傳遞 Map 或 List<object> 作為 JPA 查詢的參數<div id="text_translate"><p>我需要將 map 作為 <Sting,String> 或 List 類型的輸入參數傳遞到兩個 JPA 列中,並將結果作為映射/列表中所有條目的記錄列表。</p><p> 是這樣的:</p><pre> @Query( value = "SELECT e from #{#entityName} e where e.name = KEY(someMap) and e.relationName = VALUE(someMap)") List<Member> findByNameAndRelationNameIn( @Param("someMap") Map<String, String> someMap);</pre><p> 或者</p><pre>@Query( value = "SELECT e from #{#entityName} e where e.name IN (:#{#dataSpaceMembers.?[name]}) and e.dataSpaceName IN (:#{#dataSpaceMembers.?[dataSpaceName]})") List<DataSpaceMember> findByNameAndDataSpaceIn( @Param("dataSpaceMembers") List<DataSpaceMember> dataSpaceMembers);</pre><p> 但是應用程序不會運行,因為這不是有效的 jpa 查詢。 我不想在循環中運行單個查詢,而是尋找一個可以將結果作為列表給出的查詢。</p></div></object>

[英]how to pass Map or List<Object> as a parameter to JPA query

暫無
暫無

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

相關問題 如何使用 {} 在 JPA 查詢中傳遞列表參數 如何傳遞 Map 或 List<object> 作為 JPA 查詢的參數<div id="text_translate"><p>我需要將 map 作為 <Sting,String> 或 List 類型的輸入參數傳遞到兩個 JPA 列中,並將結果作為映射/列表中所有條目的記錄列表。</p><p> 是這樣的:</p><pre> @Query( value = "SELECT e from #{#entityName} e where e.name = KEY(someMap) and e.relationName = VALUE(someMap)") List<Member> findByNameAndRelationNameIn( @Param("someMap") Map<String, String> someMap);</pre><p> 或者</p><pre>@Query( value = "SELECT e from #{#entityName} e where e.name IN (:#{#dataSpaceMembers.?[name]}) and e.dataSpaceName IN (:#{#dataSpaceMembers.?[dataSpaceName]})") List<DataSpaceMember> findByNameAndDataSpaceIn( @Param("dataSpaceMembers") List<DataSpaceMember> dataSpaceMembers);</pre><p> 但是應用程序不會運行,因為這不是有效的 jpa 查詢。 我不想在循環中運行單個查詢,而是尋找一個可以將結果作為列表給出的查詢。</p></div></object> Spring Data JPA如何傳遞日期參數 如何將字符串列表作為參數傳遞給 JPA 本機查詢並在 Postgresql ARRAY [] 將參數傳遞給 jpa 轉換器 如何編寫JPA查詢,其中參數是一個集合? 我將如何使用jpa在jpa對象列表中查詢參數 如何在本機查詢 JPA 中傳遞參數 LinkedIn-如何傳遞查詢參數 JPA - 查詢參數為null
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM