Класс конструктора 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

Благодарю.

учтивость

Другие вопросы по тегам