سؤال
وأواجه مشكلة مع استعلام جديد SELECT.
Query q = em.createQuery(
"SELECT NEW com.bcbst.odstats.ejb.RangeStats(a.folderName, SUM(a.hits)) " +
"FROM ODStat a GROUP BY a.folderName");
return q.getResultList();
وأحصل على ما يلي تتبع مكدس الذاكرة المؤقتة عندما أحاول تشغيل هذا الاستعلام. RangeStats لا توجد لديها طرق العامة، وFQN دقيقة وفي RangeStats حقيقة يقيم في نفس الحزمة كطبقة إجراء الاستعلام. لقد فعلت استفسارات حول ODStat من قبل، لذلك أنا أيضا على ثقة من أن a.folderName وa.hits على ما يرام.
وأنا النامية RAD 7.5، وكان 7، OpenJPA 1.2.1، MS SQL JDBC سائق 1.2.
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:896)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1527)
Caused by: javax.ejb.EJBException: See nested exception; nested exception is:
<openjpa-1.2.1-SNAPSHOT-r422266:686069 nonfatal user error>
org.apache.openjpa.persistence.ArgumentException: Result type "class
com.bcbst.odstats.ejb.RangeStats" does not have any public fields or setter methods
for the projection or aggregate result element "jpqlalias1", nor does it have a
generic put(Object,Object) method that can be used, nor does it have a public
constructor that takes the types [class java.lang.String, long].
Caused by: <openjpa-1.2.1-SNAPSHOT-r422266:686069 nonfatal user error>
org.apache.openjpa.persistence.ArgumentException: Result type "class
com.bcbst.odstats.ejb.RangeStats" does not have any public fields or setter methods
for the projection or aggregate result element "jpqlalias1", nor does it have a
generic put(Object,Object) method that can be used, nor does it have a public
constructor that takes the types [class java.lang.String, long].
at org.apache.openjpa.kernel.ResultPacker.<init>(ResultPacker.java:139)
at org.apache.openjpa.kernel.ResultPacker.<init>(ResultPacker.java:102)
at org.apache.openjpa.kernel.QueryImpl.getResultPacker(QueryImpl.java:1262)
at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1212)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:990)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:805)
المحلول
وجدت هذه المشكلة.
منشئ قبول (String, int)
عندما يحتاج (String, long)
.
نصائح أخرى
واتبعني
public Company(String name, int iva, String businessArea, String coreBusiness) {
this.name = name;
this.iva = iva;
this.businessArea = businessArea;
this.coreBusiness = coreBusiness;
}
Query query = session.createQuery("select new Company (name, iva, businessArea, coreBusiness) from Company");
obs : org hibernate
لا تنتمي إلى StackOverflow