java.lang.IllegalArgumentException: Named query not found: User.findByEmail

今天要发布一个Web系统,不想重新做了,于是把一个现有的搬了过来,界面、配置文件等稍微改了改就准备发布了。不过测试登录的时候提示:

java.lang.IllegalArgumentException: Named query not found: User.findByEmail

说是Named query 找不到,怎么回事呢?看看User类中,确实已经定义了User.findByEmail这个Named query,但为什么还是报错呢?看了看entity,确实没问题:

@Entity
@Table(name = "USER")
@NamedQueries({
        @NamedQuery(name = "User.findAll",
                query = "select u from User u"),
        @NamedQuery(name = "User.findByEmail",
                query = "select distinct u from User u where u.email=:email"),//已经定义了
        @NamedQuery(name = "User.findById",
                query = "select distinct u from User u where u.id=:id")
})

想来想去,并且网上也查了查,说是可能是Spring注解的问题,难道这里漏掉了?maven反复clean和run了好多次,还是老样子。

于是,决定换个思路,会不会是在照搬原项目的过程中出的问题呢?

于是,把项目的app-context.xml检查了一遍,好像发现了点问题:

有一个配置属性:packageToScan,应该是要扫描的包,值为原来项目的包名,那么问题应该就是在这里了,因为新的项目里,我已经把包名给改了

<property name="packagesToScan" value="com.hk.foodsafety.service.*.entities" />


于是,把这个属性的值修改一下,改成新的包名:

<property name="packagesToScan" value="com.vict.manage.*.entity" />

然后重新运行,成功了!

问题解决。


思路总结:在从现有项目中照搬内容做新项目的过程中,一定要注意修改相关的配置文件。如果新项目遇到了老项目中没有的问题,那么在排查的时候可以重点考虑一下某些配置文件是否还是用的老项目的,没改过来。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鹰信息技术服务部

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值