我正在使用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;
}
在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) {
因为持久属性projectNo的Long
类型是,所以创建ParameterExpression时的type参数应该是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));
我正在使用Hibernate4,我在JSF页面中有一个过滤器来获取搜索结果。在执行搜索期间,我得到以下异常 java.lang.IllegalArgumentException:参数值[568903]与org.hibernate.ejb.AbstractQueryImpl.validateParameterBinding(AbstractQueryImpl.java:370)org.hiberna
问题内容: 我正在使用Hibernate 4,并且在JSF页面中有一个过滤器来获取搜索结果。在执行搜索期间,出现以下异常 java.lang.IllegalArgumentException:参数值[568903]与org.hibernate.ejb.AbstractateImpl.java:370处org.hibernate.ejb.AbstractQueryImpl.validateParam
它打印出值的等效,这是因为这一行: 通过调用表示。 那么,如何使Hibernate相信是的实例? 我的枚举是由加载的。而由URLClassLoader加载,由另一个类加载器加载。
我是一个初学者在Spring开机,我有两个表,其中有一对一的关系。问题是,当我试图通过用户id获取用户记录时,会出现如下异常。 我粘贴了我所有的代码。我的代码中有什么错误?
当我想跑的时候: 我得到: 执行操作“MappingAddAction”的服务异常,java.lang.IllegalArgumentException:参数值[5118]与预期的类型[com.vernuso.trust.server.domain.ClientImport.MappingInfo(N/A)]不匹配 有人能帮助我理解为什么它需要类型而不是类型吗? 我有两个表,如下图所示。Mappi
我做错了什么? 正在更新: 我发现了问题所在。问题与ActionRepository中找到的函数有关。函数的签名首先要求两个日期进行比较,然后id和我给出了相反的值。我很清楚,在我上了它之后,我会有一个问题的日期,所以答案确实帮助了我。谢谢大家!