Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[eclipselink-users] NoSuchMethodException with SELECT NEW

I’m probably missing something obvious here but I’m running into a problem with a SELECT NEW. I have a DTO object that looks like the following:

package foo.bar.biz.MyDTO;

public MyDTO {

  private String name;
  private long count;

  public MyDTO(String name, Long count) {
    this.name = name;
    this.count = count;
  }
}

Using IDEA’s JPQL console I try executing the following statement:

SELECT NEW foo.bar.biz.MyDTO(u.name, COUNT(u.name)) FROM User u, Groups g1, Groups g2 WHERE u.group=g1.id AND g1.parentId=g2.id GROUP by u.name

This yields the following exception (w/Eclipselink 2.3.2v20111125-r10461):

Exception Description: An Exception was thrown while executing a ReportQuery with a constructor expression: java.lang.NoSuchMethodException: foo.bar.biz.MyDTO.<init>(java.lang.String, java.lang.Long)
Query: ReportQuery(referenceClass=User jpql=“SELECT NEW foo.bar.biz.MyDTO(u.name, COUNT(u.name)) FROM User u, Groups g1, Groups g2 WHERE u.group=g1.id AND g1.parentId=g2.id GROUP by u.name”)
	at org.eclipse.persistence.exceptions.QueryException.exceptionWhileUsingConstructorExpression(QueryException.java:504)
	at org.eclipse.persistence.queries.ConstructorReportItem.initialize(ConstructorReportItem.java:188)
	at org.eclipse.persistence.queries.ReportQuery.prepare(ReportQuery.java:1044)
	at org.eclipse.persistence.queries.DatabaseQuery.checkPrepare(DatabaseQuery.java:613)
	at org.eclipse.persistence.queries.ObjectLevelReadQuery.checkPrepare(ObjectLevelReadQuery.java:823)
	at org.eclipse.persistence.queries.DatabaseQuery.prepareCall(DatabaseQuery.java:1741)
	at org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:268)
	at org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:190)
	at org.eclipse.persistence.internal.jpa.EJBQueryImpl.<init>(EJBQueryImpl.java:142)
	at org.eclipse.persistence.internal.jpa.EJBQueryImpl.<init>(EJBQueryImpl.java:126)
	at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1475)
	at com.intellij.jpa.remote.impl.RemoteEntityManagerImpl.createQuery(RemoteEntityManagerImpl.java:39)
	at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)
	at sun.rmi.transport.Transport$1.run(Transport.java:177)
	at sun.rmi.transport.Transport$1.run(Transport.java:174)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.rmi.transport.Transport.serviceCall(Transport.java:173)
	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:556)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:811)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:670)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:744)
	at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:275)
	at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:252)
	at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:161)
	at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:194)
	at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:148)
	at com.sun.proxy.$Proxy201.createQuery(Unknown Source)
	at sun.reflect.GeneratedMethodAccessor6359.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at com.intellij.execution.rmi.RemoteUtil.invokeRemote(RemoteUtil.java:124)
	at com.intellij.execution.rmi.RemoteUtil.access$100(RemoteUtil.java:36)
	at com.intellij.execution.rmi.RemoteUtil$2$1$1.compute(RemoteUtil.java:105)
	at com.intellij.execution.rmi.RemoteUtil.executeWithClassLoader(RemoteUtil.java:181)
	at com.intellij.execution.rmi.RemoteUtil$2$1.invoke(RemoteUtil.java:102)
	at com.sun.proxy.$Proxy201.createQuery(Unknown Source)
	at com.intellij.jpa.engine.JpaEngine.createQuery(JpaEngine.java:102)
	at com.intellij.jpa.engine.JpaEngineBase.executeQueryInner(JpaEngineBase.java:187)
	at com.intellij.jpa.engine.JpaEngineBase.access$100(JpaEngineBase.java:62)
	at com.intellij.jpa.engine.JpaEngineBase$2.run(JpaEngineBase.java:147)
	at com.intellij.jpa.engine.JpaEngineBase$1.run(JpaEngineBase.java:113)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:744)

Back to the top