2013-03-07 51 views
1

當我從遷移2.0.4我的應用程序2.1.0此異常得到投擲:Hibernate和playframework給拋出:IllegalArgumentException ......不匹配java.util.Map類型

play.api.Application$$anon$1: Execution exception[[IllegalArgumentException: Parameter value [[email protected]] was not matching type [java.util.Map]]] 
    at play.api.Application$class.handleError(Application.scala:289) ~[play_2.10-2.1.0.jar:2.1.0] 
    at play.api.DefaultApplication.handleError(Application.scala:383) [play_2.10-2.1.0.jar:2.1.0] 
    at play.core.server.netty.PlayDefaultUpstreamHandler$$anon$2$$anonfun$handle$1.apply(PlayDefaultUpstreamHandler.scala:132) [play_2.10-2.1.0.jar:2.1.0] 
    at play.core.server.netty.PlayDefaultUpstreamHandler$$anon$2$$anonfun$handle$1.apply(PlayDefaultUpstreamHandler.scala:128) [play_2.10-2.1.0.jar:2.1.0] 
    at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) [play_2.10-2.1.0.jar:2.1.0] 
    at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) [play_2.10-2.1.0.jar:2.1.0] 
java.lang.IllegalArgumentException: Parameter value [[email protected]] was not matching type [java.util.Map] 
    at org.hibernate.ejb.AbstractQueryImpl.registerParameterBinding(AbstractQueryImpl.java:360) ~[hibernate-entitymanager-3.6.9.Final.jar:3.6.9.Final] 
    at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:364) ~[hibernate-entitymanager-3.6.9.Final.jar:3.6.9.Final] 
    at org.hibernate.ejb.criteria.CriteriaQueryCompiler$1$1.bind(CriteriaQueryCompiler.java:194) ~[hibernate-entitymanager-3.6.9.Final.jar:3.6.9.Final] 
    at org.hibernate.ejb.criteria.CriteriaQueryCompiler.compile(CriteriaQueryCompiler.java:247) ~[hibernate-entitymanager-3.6.9.Final.jar:3.6.9.Final] 
    at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:603) ~[hibernate-entitymanager-3.6.9.Final.jar:3.6.9.Final] 
    at shared.dao.impl.GenericDAOImpl$QueryQuery.selectCount(GenericDAOImpl.java:273) ~[na:na] 

所有modelDao的擴展了這個GenericDAOImpl。該方法的廣告線273是:

Long selectCount(){ 
     CriteriaBuilder builder = JPA.em().getCriteriaBuilder(); 
     CriteriaQuery<Long> criteria = builder.createQuery(Long.class); 
     Root<T> root = criteria.from(clazz); 
     criteria.select(builder.count(root)); 
     criteria.where(buildWhere(builder, root)); 
     //buildSelectWhere(builder, root, criteria); 
     return JPA.em().createQuery(criteria).getSingleResult(); 
    } 

clazz變量是延伸DAO的模型的一個.class。 我有點迷失在實際的問題。 在2.0.4中,這可以很好地工作。

+1

我能夠做推廣這一問題與附帶的計算機數據庫,例如JPA與2.1.0。 只需將以下內容插入以使其運行,您將看到以下錯誤: Company company = Company.findById(1l); 列表數據= JPA.em() .createQuery( 「從計算機,其中公司=:公司」) .setParameter( 「公司」,公司) .setFirstResult(0) .setMaxResults(10) .getResultList( ); – Ben 2013-03-11 00:21:39

+0

我已經發布它作爲一個問題在github上:https://github.com/playframework/Play20/issues/851 – Eernie 2013-03-14 13:42:54

回答