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

问题描述 投票:1回答:1

我在两个实体中有相同的@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".

是什么原因以及我们如何摆脱这种警告?

jpa openjpa named-query
1个回答
1
投票

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

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

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

@NamedQuery(name = "Student.getStudentById"..
@NamedQuery(name = "Marks.getStudentById"...
© www.soinside.com 2019 - 2024. All rights reserved.