LIVE式を使用して日付フィールドにクエリを実行しようとしましたが、次のように名前付きクエリを使用しました。JPA 2.1を使用して日付フィールドにLike式を使用する
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.util.Dateクラスの予想されるタイプとregDate
を:あなたは パラメータの型クラスjava.lang.Stringの値を設定しようとしてきた
JPA 2.1で動作しているときJPA 2.0では正常に動作しています。
日付は文字列ではありません(これはLIKEで定義されています)。正確に何を期待していますか? –
@NeilStocktonはJPA 2.0で完全に動作します。 – kabugima2
'LIKE'は文字列であり、日付(または数字)ではありません –