今天在服务器上发布了个新系统,登录的时候提示Named query not found:
java.lang.IllegalArgumentException: Named query not found: User.findByUsername
看了一下entity包中的User类,NamedQuery是定义好的,那为什么提示找不到Named query呢?
想起昨天调试的时候也遇到过这个问题,既然实体类本身没问题,那么问题肯定出在其他环节。
也就是说,光实体类中定义了Named Query还不够,还要有其他类通过什么方式把它加载进来,那么问题就出在加载这个环节。
在几个环节都查了一遍,找到了原因:
在app-context.xml中,“packagesToScan” 这个节点是用来扫描实体类,加载Named Query的,并且这里的包名写错了,还是用的旧包,而项目里实际已经换了新包:
<property name="packagesToScan" value="com.vict.manage.*.entity" />
参照新的包结构,修改这个节点
修改如下:
<property name="packagesToScan" value="com.vict.web1.entity" />
重启,问题解决!