[英]How to pass parameter on jpa query?
我有兩個實體,如SmsOut和SmsIn 。 兩個實體之間的關系包含OneToMany ,其中smsIn.id是主鍵 , smsOut.sms_in_id是外鍵 。
現在我想在查詢上傳遞smsIn.mobileNumber , smsIn.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)
請幫我。 謝謝
你沒有解釋SmsIn
和SmsOut
之間的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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.