Один и тот же @NamedQueries в двух разных объектах выдает предупреждение - PullRequest
0 голосов
/ 12 февраля 2019

У меня одно и то же @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".

В чем причина и как мы можем избавиться от этого предупреждения?

1 Ответ

0 голосов
/ 12 февраля 2019

Область действия @NamedQuery - это единица персистентности.Неважно, что они определены в разных сущностях.

Скорее всего, когда вы определяете дублирующееся имя, одно из них будет переопределено при создании единицы сохраняемости.

Хорошей практикой являетсяпрефикс ваших именованных запросов с именами сущностей:

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