Класс конструктора JPA [Emp] не найден - oracle.toplink.essentials.exceptions.EJBQLException

Это продолжение этого вопроса

Я назвал запрос как

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.

person Jacob    schedule 15.12.2014    source источник


Ответы (2)


http://openjpa.apache.org/builds/1.2.0/apache-openjpa-1.2.0/docs/manual/jpa_langref.html#jpa_langref_constructor

Конструктор может использоваться в списке SELECT для возврата одного или нескольких экземпляров Java. Указанный класс не обязательно должен быть сущностью или отображаться в базе данных. Имя конструктора должно быть полным.

SELECT NEW com.company.PublisherInfo(pub.id, pub.revenue, mag.price)
person Adrian B.    schedule 15.12.2014

Мне удалось устранить ошибку, может быть полезно другим.

В 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

Спасибо.

Предоставлено

person Jacob    schedule 15.12.2014
comment
мы разместили то же самое одновременно :) - person Adrian B.; 15.12.2014
comment
@AdrianB. Да, но я отдам его тебе. - person Jacob; 15.12.2014