私はHibernate4を使用しており、検索結果を取得するためにJSFページにフィルターがあります。検索の実行中に、次の例外が発生します
java.lang.IllegalArgumentException:パラメーター値[568903]が、org.hibernate.ejb.AbstractQueryImpl.validateParameterBinding(AbstractQueryImpl.java:370)の期待されるタイプ[java.lang.Long]とorg.hibernate.ejb.AbstractQueryImpl.registerParameterBindingで一致しませんでした(AbstractQueryImpl.java:343)at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:370)at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:323)
以下は私のコードスニペットです、どうすればこの問題を修正できますか?
private Long projectNo;
public Long getProjectNo() {
return projectNo;
}
public void setProjectNo(Long projectNo) {
this.projectNo = projectNo;
}
そしてDAOクラスには次のものがあります
String projectNo = filters.get("projectNo");
List<Predicate> criteria = new ArrayList<Predicate>();
if (projectNo!= null) {
ParameterExpression<String> pexp = cb.parameter(String.class, "projectNo");
Predicate predicate = cb.equal(emp.get(Project_.projectNo), pexp);
criteria.add(predicate);
}
TypedQuery<Project> q = entityManager.createQuery(c);
TypedQuery<Long> countquery = entityManager.createQuery(countQ);
q.setParameter("projectNo", projectNo); // error in this line
countquery.setParameter("projectNo", projectNo);
編集1
public void getProjects(ProjectQueryData data) {
ProjectQueryData
クラスでは、コンストラクターとして次のものがあります
public ProjectQueryData (int start, int end, String field,
QuerySortOrder order, Map<String, String> filters) {