先看一下报错:
1 ERROR: HHH000123: IllegalArgumentException in class: com.project.entity.PowerUserEntity, setter method of property: uId 2 七月 30, 2017 11:52:06 下午 org.hibernate.property.BasicPropertyAccessor$BasicSetter set 3 ERROR: HHH000091: Expected type: java.lang.String, actual value: java.lang.Integer 4 org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of com.project.entity.PowerUserEntity.uId 5 at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:119) 6 at org.hibernate.transform.AliasToBeanResultTransformer.transformTuple(AliasToBeanResultTransformer.java:95) 7 at org.hibernate.hql.internal.HolderInstantiator.instantiate(HolderInstantiator.java:95) 8 at org.hibernate.loader.custom.CustomLoader.getResultList(CustomLoader.java:395) 9 at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2254) 10 at org.hibernate.loader.Loader.list(Loader.java:2249) 11 at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:331) 12 at org.hibernate.internal.SessionImpl.listCustomQuery(SessionImpl.java:1784) 13 at org.hibernate.internal.AbstractSessionImpl.list(AbstractSessionImpl.java:229) 14 at org.hibernate.internal.SQLQueryImpl.list(SQLQueryImpl.java:156) 15 at com.project.dao.impl.UserDaoImpl.getPowerByUserId(UserDaoImpl.java:52) 16 at com.project.test.Test.main(Test.java:32) 17 Caused by: java.lang.IllegalArgumentException: argument type mismatch 18 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 19 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 20 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 21 at java.lang.reflect.Method.invoke(Method.java:606) 22 at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:65) 23 ... 11 more
红色标注的地方为错误的类型,以及发生错误的位置,造成错误的原因是:数据库关联表中主键id的类型不一致,检查一下是否有的用的是varchar,有的是用的是int,
com.project.entity.PowerUserEntity.uId 自己实体类中的 id 也要与关联表的 id 类型一致,这个问题就迎刃而解了!