Класс конструктора JPA [Emp] не найден - oracle.toplink.essentials.exceptions.EJBQLException
Это продолжение этого вопроса
Я назвал Query как
select new Emp(o.empNo, o.empName) from Emp o
и конструктор определяется как
public Emp(String empNo, String empName) {
this.empNo= empNo;
this.empName= empName;
}
Я получаю сообщение об ошибке при выполнении
Exception [TOPLINK-8013] (Oracle TopLink Essentials - 2.1
(Build b52-fcs (09/24/2008))):
oracle.toplink.essentials.exceptions.EJBQLException
Exception Description: Error compiling the query [Emp.findAll:
select new Emp(o.empNo, o.empName) from Emp o ], line 1, column 9:
constructor class [Emp] not found.
2 ответа
Решение
http://openjpa.apache.org/builds/1.2.0/apache-openjpa-1.2.0/docs/manual/jpa_langref.html
Конструктор может использоваться в списке SELECT для возврата одного или нескольких экземпляров Java. Указанный класс не обязательно должен быть сущностью или отображаться в базу данных. Имя конструктора должно быть полностью квалифицированным.
SELECT NEW com.company.PublisherInfo(pub.id, pub.revenue, mag.price)
Мне удалось устранить ошибку, может быть полезно для других.
В namedQuery вместо
select new Emp(o.empNo, o.empName) from Emp o
укажите полное имя класса, т.е. <packagename>.<classname>
select new test.entity.Emp(o.empNo, o.empName) from Emp o
Благодарю.