Jåc*_*cob 11 java hibernate jpa jpa-2.0
我正在使用Hibernate 4,我在JSF页面中有一个过滤器来获取搜索结果.在执行搜索期间,我收到以下异常
java.lang.IllegalArgumentException:参数值[568903]与org.hibernate.ejb.AbstractQueryImpl.registerParameterBinding上的org.hibernate.ejb.AbstractQueryImpl.validateParameterBinding(AbstractQueryImpl.java:370)中的预期类型[java.lang.Long]不匹配(AbstractQueryImpl.java:343)org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:370)org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:323)
下面是我的代码片段,我该如何解决这个问题?
private Long projectNo;
public Long getProjectNo() {
return projectNo;
}
public void setProjectNo(Long projectNo) {
this.projectNo = projectNo;
}
Run Code Online (Sandbox Code Playgroud)
在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);
Run Code Online (Sandbox Code Playgroud)
编辑1
public void getProjects(ProjectQueryData data) {
Run Code Online (Sandbox Code Playgroud)
在ProjectQueryData课堂上,我有以下作为构造函数
public ProjectQueryData (int start, int end, String field,
QuerySortOrder order, Map<String, String> filters) {
Run Code Online (Sandbox Code Playgroud)
Mik*_*unu 12
因为持久属性projectNo的Long类型是,所以在创建ParameterExpression时应该输入类型参数Long.因此,因为ParameterExpression的Long类型是,参数值的类型也应该是Long:
//because this persistent Attribute is Long:
private Long projectNo;
//we use Long here as well
ParameterExpression<Long> pexp = cb.parameter(Long.class, "projectNo");
...
//and finally set parameter. Long again, because that is the type
// type of ParameterExpression:
query.setParameter("projectNo", Long.valueOf(projectNo));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
63781 次 |
| 最近记录: |