我正在使用命名查询在日期字段上使用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'用于字符串,不适用于日期(或数字) –