アプリケーションを 2.0.4 から 2.1.0 に移行すると、次の例外がスローされます。
play.api.Application$$anon$1: Execution exception[[IllegalArgumentException: Parameter value [shared.models.Restaurant@f59fc] 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 [shared.models.Restaurant@f59fc] 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 は this を拡張し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 では問題なく動作していました。