未找到JPA构造函数类[Emp] - oracle.toplink.essentials.exceptions.EJBQLException

时间:2014-12-15 12:18:28

标签: java jpa toplink toplink-essentials

这是question

的延续

我将namedQuery命名为

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 个答案:

答案 0 :(得分:1)

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)

答案 1 :(得分:0)

我已设法解决错误,可能对其他人有用。

在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

感谢。

Courtesy