其他分享
首页 > 其他分享> > 使用Spring框架获取’找不到命名查询’

使用Spring框架获取’找不到命名查询’

作者:互联网

我有一个带有一组命名查询的Java类(实体).当Spring尝试注入相关的bean时,它没有找到其中一个查询.

例如:

@NamedQueries({
        @NamedQuery(name = "Query1", query = "..."),
        @NamedQuery(name = "Query2", query = "..."),
        @NamedQuery(name = "Query3", query = "..."),
        @NamedQuery(name = "Query4", query = "..."),
        @NamedQuery(name = "Query5", query = "...")
})

当Spring尝试注入bean时,我得到:

org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'myBean': Injection of resource methods failed;nested exception is
java.lang.IllegalArgumentException: Named query not found: Query3 at ...

我确定查询是正确的(它们的所有单元测试都在通过).

有人知道它的根本原因吗?

解决方法:

>确保您的实体已被映射/扫描.是否使用@Entity进行注释,是将其添加到persistence.xml还是相关的提供程序配置,还是自动扫描.
>我将该类的名称作为查询的前缀 – 即MyEntity.Query1,MyEntity.Query1等.
>验证是否没有部署错误 – 即您的查询是否正确

标签:java,spring,jpa,named-query
来源: https://codeday.me/bug/20190518/1129963.html