Używam Hibernate 4 i mam filtr na stronie JSF, aby uzyskać wyniki wyszukiwania. Podczas wykonywania wyszukiwania otrzymuję następujący wyjątekWartość parametru hibernacji [568903] nie pasuje do oczekiwanego typu [java.lang.Long]
java.lang.IllegalArgumentException: wartość parametru [568903] Nie znaleziono spodziewany typ [java.lang.Long] na org.hibernate.ejb.AbstractQueryImpl. validateParameterBinding (AbstractQueryImpl.java:370) w org.hibernate.ejb.AbstractQueryImpl.registerParameterBinding (AbstractQueryImpl.java:343) w org.hibernate.ejb.QueryImpl.setParameter (QueryImpl.java:370) w org.hibernate. ejb.QueryImpl.setParameter (QueryImpl.java:323)
Poniżej znajduje się mój fragment kodu, jak mogę rozwiązać ten problem?
private Long projectNo;
public Long getProjectNo() {
return projectNo;
}
public void setProjectNo(Long projectNo) {
this.projectNo = projectNo;
}
I klasy DAO Mam następujący
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);
Edycja 1
public void getProjects(ProjectQueryData data) {
aw ProjectQueryData
klasie, mam następujący jako konstruktora
public ProjectQueryData (int start, int end, String field,
QuerySortOrder order, Map<String, String> filters) {
Mikko, dziękuję bardzo, to naprawdę pomogło rozwiązać problem. Bardzo doceniane. – user75ponic
+1 miła robota, wygląda na to, że udało ci się zebrać wszystko razem, aby uzyskać spójną odpowiedź, która zadziałała! –