java - 两个不同实体中的相同 @NamedQueries 会发出警告

标签 java jpa openjpa named-query

我在两个实体中有相同的@NamedQueries,如下所示:

@Table(name = "STUDENT_TABLE")
@NamedQueries({ 
@NamedQuery(name = "getStudentById", query = "SELECT s FROM Student s where s.stdId=:stdId"),
@NamedQuery(name = "getStudentByName", query = "SELECT s FROM Student s where s.fName=:fName and s.lName =:lName")
})

@Table(name = "MARKS_TABLE")
@NamedQueries({ 
@NamedQuery(name = "getStudentById", query = "SELECT s FROM Student s where s.stdId=:stdId"),
@NamedQuery(name = "getStudentByName", query = "SELECT s FROM Student s where s.fName=:fName and s.lName =:lName")
})

当我处理上述内容时,我收到如下警告:

openjpa.MetaData: Warn: Ignoring duplicate query "getStudentById" in "class Student". A query with the same name been already declared in "class Marks".
openjpa.MetaData: Warn: Ignoring duplicate query "getStudentByName" in "class Student". A query with the same name been already declared in "class Marks".

原因是什么?我们如何摆脱这个警告?

最佳答案

@NamedQuery 的范围是整个持久性单元。 它们在不同的实体上定义并不重要。

很可能当您定义重复名称时,其中一个名称将在构建持久性单元期间被覆盖。

好的做法是在命名查询前加上实体名称前缀:

@NamedQuery(name = "Student.getStudentById"..
@NamedQuery(name = "Marks.getStudentById"...

关于java - 两个不同实体中的相同 @NamedQueries 会发出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54650949/

相关文章:

java - 关于使用 openJPA MySQL 进行运行时优化的异常

java - 使用 TomEE 并打开 JPA,我收到以下错误 : SEVERE: JAVA AGENT NOT INSTALLED

java - 如何在启动时选择打开(或不打开)最后一个 intellij 项目?

java - 在Spring batch中使用hibernate读取数据

java - JPA 查询和关系

spring - Spring 数据的延迟加载

jakarta-ee - BMT/CMT 和应用程序/容器管理的 EntityManager 之间有什么关系?

java - 如何降低SmartMaterialSpinner的高度?

java - 什么是 Java 中的匹配项

java - 了解 : "Cannot perform operation delete on detached object"