0

これはこの質問の続きです

私は

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.
4

2 に答える 2

1

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

コンストラクターを SELECT リストで使用して、1 つ以上の Java インスタンスを返すことができます。指定されたクラスは、エンティティーである必要も、データベースにマップされる必要もありません。コンストラクター名は完全修飾名でなければなりません。

SELECT NEW com.company.PublisherInfo(pub.id, pub.revenue, mag.price)
于 2014-12-15T12:35:15.093 に答える
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

ありがとう。

礼儀

于 2014-12-15T12:35:15.923 に答える