Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] Problem using SqlResultsetMapping and nativeQuery

I think you may need to use "?" for native queries, not ":".


NBW wrote:
> 
> I'm getting an exception running a query which uses a SqlResultsetMapping.
> My query looks like:
> 
> Query q = entityManager.createNativeQuery(SELECT sh, COUNT(sh) as shCount
> FROM FooEntity sh, BarEntity z WHERE sh.startTimestamp >= :startDate AND
> sh.endTimestamp<= :endDate AND sh.Baz = z.Baz AND z.characters LIKE
> :likeExpr", "fooAndCountMapping");
> 
> My SqlResultSetMapping looks like this:
> 
> @SqlResultSetMapping(name="fooAndCountMapping", entities =
> @EntityResult(entityClass=FooEntity.class), columns = @ColumnResult(name =
> "shCount"))
> 
> Executing the query generates the following exception -
> 
> [#|2011-04-05T15:33:38.004-
> 0400|WARNING|glassfish3.1|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=173;_ThreadName=Thread-1;|StandardWrapperValve[DMS]:
> PWC1406: Servlet.service() for servlet DMS threw exception
> Local Exception Stack:
> Exception [EclipseLink-4002] (Eclipse Persistence Services -
> 2.2.0.v20110202-r8913):
> org.eclipse.persistence.exceptions.DatabaseException
> Internal Exception: java.sql.SQLException: Missing IN or OUT parameter at
> index:: 1
> Error Code: 17041
> Call: SELECT sh, COUNT(sh) as shCount FROM FooEntity sh, BarEntity z WHERE
> sh.startTimestamp >= :startDate AND sh.endTimestamp<= :endDate AND sh.Baz
> =
> z.Baz AND z.characters LIKE :likeExpr
> Query: ResultSetMappingQuery(sql="SELECT sh, COUNT(sh) as shCount FROM
> FooEntity sh, BarEntity z WHERE sh.startTimestamp >= :startDate AND
> sh.endTimestamp<= :endDate AND sh.Baz = z.Baz AND z.characters LIKE
> :likeExpr")
>    at
> org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:333)
>    at
> org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:684)
>    at
> org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:526)
>    at
> org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCall(AbstractSession.java:1729)
>    at
> org.eclipse.persistence.sessions.server.ClientSession.executeCall(ClientSession.java:234)
>    at
> org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:207)
>    at
> org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:193)
>    at
> org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeSelectCall(DatasourceCallQueryMechanism.java:264)
>    at
> org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeSelect(DatasourceCallQueryMechanism.java:246)
>    at
> org.eclipse.persistence.queries.ResultSetMappingQuery.executeDatabaseQuery(ResultSetMappingQuery.java:212)
>    at
> org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:808)
>    at
> org.eclipse.persistence.queries.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:711)
>    at
> org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2842)
>    at
> org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1521)
>    at
> org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1503)
>    at
> org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1477)
>    at
> org.eclipse.persistence.internal.jpa.EJBQueryImpl.executeReadQuery(EJBQueryImpl.java:484)
>    at
> org.eclipse.persistence.internal.jpa.EJBQueryImpl.getResultList(EJBQueryImpl.java:741)
>    at
> com.pfi.dms.controller.ScreenshotBean.searchPaged(ScreenshotBean.java:113)
>    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>    at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>    at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>    at java.lang.reflect.Method.invoke(Method.java:597)
>    at
> org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052)
>    at
> org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124)
>    at
> com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5367)
>    at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619)
>    at
> com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:801)
>    at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571)
>    at
> com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:162)
>    at
> com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:144)
>    at sun.reflect.GeneratedMethodAccessor258.invoke(Unknown Source)
>    at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>    at java.lang.reflect.Method.invoke(Method.java:597)
>    at
> com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:862)
>    at
> com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:801)
>    at
> com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:371)
>    at
> com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5339)
>    at
> com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5327)
>    at
> com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:214)
>    at
> com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88)
>    at $Proxy715.searchPaged(Unknown Source)
>   [SNIP]
> Caused by: java.sql.SQLException: Missing IN or OUT parameter at index:: 1
>    at
> oracle.jdbc.driver.OraclePreparedStatement.processCompletedBindRow(OraclePreparedStatement.java:1752)
>    at
> oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3444)
>    at
> oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3493)
>    at
> oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1491)
>    at
> org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeSelect(DatabaseAccessor.java:889)
>    at
> org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:598)
>    ... 110 more
> |#]
> 
> 
> *Environment:*
> JPA 2 bundled with GF v3.1 FCS
> Oracle 10g XE
> 
> Thoughts?
> 
> -Noah
> 
> 
> 


-----
http://wiki.eclipse.org/User:James.sutherland.oracle.com James Sutherland 
http://www.eclipse.org/eclipselink/
 EclipseLink ,  http://www.oracle.com/technology/products/ias/toplink/
TopLink 
Wiki:  http://wiki.eclipse.org/EclipseLink EclipseLink , 
http://wiki.oracle.com/page/TopLink TopLink 
Forums:  http://forums.oracle.com/forums/forum.jspa?forumID=48 TopLink , 
http://www.nabble.com/EclipseLink-f26430.html EclipseLink 
Book:  http://en.wikibooks.org/wiki/Java_Persistence Java Persistence 
Blog:  http://java-persistence-performance.blogspot.com/ Java Persistence
Performance 
-- 
View this message in context: http://old.nabble.com/Problem-using-SqlResultsetMapping-and-nativeQuery-tp31327579p31335672.html
Sent from the EclipseLink - Users mailing list archive at Nabble.com.



Back to the top