下面是我Dao里面的查询
@Query("select new com.example.demo.entity.CommonBuyingVO(c.comId,c.merchantIds,c.comName,c.comOutMoney,c.comNowMoney,c.comStock,"+
"c.com_salesVolume,c.comType,c.comClass,c.comStatus,c.comimgPath," +
"c.comUrl,c.comSort,c.comValidData,c.comAddDate,c.comUpDate,c.comDepict," +
"s.scaBeginDate,s.scaEndDate) from CommonBuying c ,ScareBuying s where c.comId=s.proid and c.comType = ?1 and c.comStatus!=?2 and c.merchantIds=?3 ")
List<CommonBuyingVO> getScareBuying(String comType,String comStatus,Integer merchantIds);
这里是我调用该接口
List<CommonBuyingVO> comm=commonBuyingDao.getScareBuying(StaticVariable.scareType, StaticVariable.isDel, merchant.getMid());
报错为:
java.lang.IllegalArgumentException: Parameter value [1] did not match expected type [java.lang.String (n/a)]
at org.hibernate.jpa.spi.BaseQueryImpl.validateBinding(BaseQueryImpl.java:897) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.jpa.internal.QueryImpl.access$000(QueryImpl.java:61) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.jpa.internal.QueryImpl$ParameterRegistrationImpl.bindValue(QueryImpl.java:235) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.jpa.internal.QueryImpl$JpaPositionalParameterRegistrationImpl.bindValue(QueryImpl.java:371) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.jpa.spi.BaseQueryImpl.setParameter(BaseQueryImpl.java:692) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.jpa.spi.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:181) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
.............................................................
找到原因是因为参数传入错误,吧Dao里面的Integer merchantIds的数据类型改为String,因为实体类里面的变量类型为String类型.