我正在使用命名查詢在日期字段上使用LIKE表達式執行查詢,如下所示;使用類似表達式的日期字段使用JPA 2.1
public Users getResultsByDate(Date regDate){
List<Users> dbUsers = new ArrayList<Users>();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Query searchQuery = getEntityManager().createNamedQuery("getUserByRegDate");
searchQuery.setParameter("regDate", "%"+dateFormat.format(regDate)+"%");
try{
dbUsers = searchQuery.getResultList();
}
catch(Exception ex){
dbUsers = new ArrayList<Users>();
}
return dbUsers;
}
在對應的類的名字的查詢;
@NamedQuery(name = "getUserByRegDate", query = "SELECT user FROM Users user WHERE user.regDate LIKE :regDate"),
該查詢在使用以前的JPA 2.0版本。在JPA 2.1上運行時執行相同的錯誤時出現以下錯誤;
您曾試圖設定型類java.lang.String的值 參數:與類java.util.Date中的預期類型regDate ...
我該如何解決當在JPA 2.1上運行?它在JPA 2.0中運行正常。
由於日期不是字符串(LIKE被定義爲要採用),你期望的是什麼? –
@NeilStockton在JPA 2.0中完美工作。 – kabugima2
'LIKE'用於字符串,不適用於日期(或數字) –