JPQL limit and Offset

1
0
-1

Hi , i want to take the 2 most recent row from my table.
but i have a problem with JPQL code :

SELECT d
FROM com.company.model.DailyOperation d
WHERE d.noTitre.persistenceId = :noTitre.persistenceId
AND d.cloturer = :cloturer
ORDER BY d.dateValeur DESC
LIMIT 1
OFFSET 1

to see that
Y5O9XAK.png

Error message
2016-11-16 15:09:01.194 +0000 GRAVE: org.hibernate.internal.SessionFactoryImpl HHH000177: Error in named query: DailyOperation.findVeilleOperation
org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: LIMIT near line 6, column 1 [SELECT d
FROM com.company.model.DailyOperation d
WHERE d.noTitre.persistenceId = :noTitre.persistenceId
AND d.cloturer = :cloturer
ORDER BY d.dateValeur DESC
LIMIT 1
OFFSET 1]
at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:54)
at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:47)
at org.hibernate.hql.internal.ast.ErrorCounter.throwQueryException(ErrorCounter.java:79)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:278)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:182)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:138)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:104)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:79)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:168)
at org.hibernate.internal.SessionFactoryImpl.checkNamedQueries(SessionFactoryImpl.java:1086)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:523)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1797)
at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:96)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:914)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:899)
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:59)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63)
at org.bonitasoft.engine.business.data.impl.JPABusinessDataRepositoryImpl.createEntityManagerFactory(JPABusinessDataRepositoryImpl.java:97)
at org.bonitasoft.engine.business.data.impl.JPABusinessDataRepositoryImpl.start(JPABusinessDataRepositoryImpl.java:91)
at org.bonitasoft.engine.business.data.impl.JPABusinessDataRepositoryImpl.resume(JPABusinessDataRepositoryImpl.java:146)
at org.bonitasoft.engine.api.impl.transaction.ResumeServiceStrategy.changeState(ResumeServiceStrategy.java:33)
at org.bonitasoft.engine.api.impl.transaction.SetServiceState.call(SetServiceState.java:79)
at org.bonitasoft.engine.api.impl.transaction.SetServiceState.call(SetServiceState.java:40)
at org.bonitasoft.engine.service.impl.BroadcastServiceLocal.executeOnAllNodes(BroadcastServiceLocal.java:65)
at org.bonitasoft.engine.api.impl.TenantAdministrationAPIImpl.setTenantClassloaderAndUpdateStateOfTenantServicesWithLifecycle(TenantAdministrationAPIImpl.java:217)
at org.bonitasoft.engine.api.impl.TenantAdministrationAPIImpl.resumeServicesForTenant(TenantAdministrationAPIImpl.java:165)
at org.bonitasoft.engine.api.impl.TenantAdministrationAPIImpl.setTenantPaused(TenantAdministrationAPIImpl.java:130)
at org.bonitasoft.engine.api.impl.TenantAdministrationAPIImpl.resume(TenantAdministrationAPIImpl.java:102)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.bonitasoft.engine.api.impl.ServerAPIImpl.invokeAPI(ServerAPIImpl.java:462)
at org.bonitasoft.engine.api.impl.ServerAPIImpl$2.call(ServerAPIImpl.java:431)
at org.bonitasoft.engine.transaction.JTATransactionServiceImpl.executeInTransaction(JTATransactionServiceImpl.java:312)
at org.bonitasoft.engine.api.impl.ServerAPIImpl.invokeAPIInTransaction(ServerAPIImpl.java:438)
at org.bonitasoft.engine.api.impl.ServerAPIImpl.invokeAPI(ServerAPIImpl.java:272)
at org.bonitasoft.engine.api.impl.ServerAPIImpl.invokeMethod(ServerAPIImpl.java:124)
at org.bonitasoft.engine.api.internal.servlet.HttpAPIServletCall.doPost(HttpAPIServletCall.java:112)
at org.bonitasoft.engine.api.internal.servlet.HttpAPIServlet.doPost(HttpAPIServlet.java:35)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:394)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.bonitasoft.console.security.SessionFixationValve.invoke(SessionFixationValve.java:77)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)

someone can help me

2 answers

1
0
-1

i will see it

1
0
-1

As far as I can tell from the JPQL library LIMIT is not a valid construct therefore you can't use it...
http://docs.oracle.com/cd/E17904_01/apirefs.1111/e13946/ejb3_langref.html

regards
Seán

PS: While I understand this may not be the answer you are looking for it does answer your question, please mark as resolved by ticking the tick mark on the left of this reply so others now it is closed.

Comments

Submitted by DrakunDry on Thu, 11/17/2016 - 11:57

in BDM there haven't "default value"
j'utilise certaine colonne dans des formules de calcul et il serait bien de pouvoir définir la valeur par défaut des champs de mon BDM pour ne pas avoir a le faire quand je change de RDBMS....
Il serait bien d'améliorer le BDM en tant que tel car comme plus haut je n'arrive pas a utiliser la fonction LIMIT (inexistant comme mentionné par SEAN McP) qui me facilite grandement mes requêtes.
Espérons que ces changement seront intégré dans la version 7.4 faute de quoi , he ben pas le choix on se débrouillera avec des colonnes BOOLEAN

obligé de ce taper des :

ALTER TABLE Persons
ALTER City SET DEFAULT 'SANDNES'
Notifications