HSQL序列的语法问题:`NEXTVAL`而不是`NEXT VALUE` [英] Syntax issue with HSQL sequence: `NEXTVAL` instead of `NEXT VALUE`

查看:294
本文介绍了HSQL序列的语法问题:`NEXTVAL`而不是`NEXT VALUE`的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Jetty服务器上部署了webapp并连接到位于HSQLDB服务器上的HSQLDB数据库。我尝试创建实体时遇到此错误:
$ b


ERROR org.hibernate.util.JDBCExceptionReporter意外的标记:NEXTVAL in statement [/ code] *动态原生SQL查询* / SELECT nextval('campagne_sequence')]

我如下初始化序列:

  CREATE SEQUENCE PUBLIC.CAMPAGNE_SEQUENCE START WITH 1 INCREMENT BY 1 

在我的webapp中,我使用 org.hibernate.dialect.HSQLDialect

设置Hibernate方言

我检查了语法来创建一个序列,它是正确的。我使用的是hsqldb-1.8.0.10,我也检查了下一个版本的语法是否发生了变化,它没有。



我知道正确的语法是 NEXT VALUE 而不是 NEXTVAL 和PostgreSQL一样,但我不知道如何解决它。谁能帮我这个?谢谢

编辑:

在测试环境中,一切正常。我所有的测试都运行良好。但在开发环境中,当我尝试创建 Campagne 时出现错误。有一个测试可以创建一个,它也可以工作。所以它应该与hsqldb-1.8.0.10版本一起工作。



我尝试添加字符串; sql.syntax_pgs = true 在数据库URL之后,不起作用。



编辑:

这是我得到的完整堆栈跟踪:

  2014-01-22 10:24:22,813 [RMI TCP Connection(6 )-127.0.0.1] WARN org.hibernate.util.JDBCExceptionReporter SQL错误:-11,SQLState:37000 
2014-01-22 10:24:22,820 [RMI TCP Connection(6)-127.0.0.1] ERROR org.hibernate.util.JDBCExceptionReporter意外的标记:NEXTVAL在声明中[/ *动态本机SQL查询* / SELECT nextval('campagne_sequence')]
2014-01-22 10:24:22,827 [RMI TCP Connection(6 )-127.0.0.1]警告org.springframework.remoting.support.RemoteInvocationTraceInterceptor处理RmiServiceExporter远程调用导致致命异常:com.square.core.service.interfaces.CampagneService.creerCampagne
org.hibernate.exception.SQLGrammarException :无法执行查询
在org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:92)
在org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
在org.hibernate.loader .Loader.doList(Loader.java:2536)
在org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
在org.hibernate.loader.Loader.list(Loader.java :2271)
at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:316)
at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1842)
在org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:165)
在org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:157)
在org.hibernate.impl。 AbstractQueryImpl.uniqueResult(AbstractQueryImpl.java:859)在com.square.core.dao.implementations.CampagneDaoImplementation.rechercherSequence(CampagneDaoImplementation.java:169)
com.square.core.util.sequence上
。 CampagneSequenceUtilImpl.recher cherSequence(CampagneSequenceUtilImpl.java:32)
在com.square.core.service.implementations.CampagneServiceImplementation.creerCampagne(CampagneServiceImplementation.java:156)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
。在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
处的java.lang.reflect.Method sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
。调用在org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
(Method.java:601)
在org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation。
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
在org.springframewor k.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
在org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
$处Proxy263.creerCampagne(未知源)美元,sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(b $ b DelegatingMethodAccessorImpl.java:43)在java.lang.reflect.Method.invoke(Method.java:601)
在org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307
)在org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)

在org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
方法安全性间接ptor.invoke(MethodSecurityInterceptor.java:66)
在org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
在org.springframework.aop.framework.JdkDynamicAopProxy.invoke( JdkDynamicAopProxy.java:204)
$处Proxy264.creerCampagne(来源不明)在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)在sun.reflect.NativeMethodAccessorImpl.invoke

(NativeMethodAccessorImpl。
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)$ b $ at java.lang.reflect.Method.invoke(Method.java:601)
at org .springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
在org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
在org.springframework.aop .framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at或g.springframework.remoting.support.RemoteInvocationTraceInterceptor.invoke(RemoteInvocationTraceInterceptor.java:77)
处org.springframework org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
。 aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)在$ Proxy263.creerCampagne处太阳sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
(来源不明)

。 reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
在java.lang.reflect.Method.invoke(Method.java: 601)
。在org.springframework.remoting.support.RemoteInvocation.invoke(RemoteInvocation.java:205)
。在org.springframework.security.context.rmi.ContextPropagatingRemoteInvocation.invoke(ContextPropagatingRemoteInvocation.java:103)
在org.springframework.remoting.support.De faultRemoteInvocationExecutor.invoke(DefaultRemoteInvocationExecutor.java:38)
在org.springframework.remoting.support.RemoteInvocationBasedExporter.invoke(RemoteInvocationBasedExporter.java:78)
在org.springframework.remoting.rmi.RmiBasedExporter.invoke( RmiBasedExporter.java:72)美元,org.springframework.remoting.rmi.RmiInvocationWrapper.invoke(RmiInvocationWrapper.java:72 b $ b)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
。在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
在java.lang.reflect.Method.invoke(方法。 java:601)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)
at sun.rmi.transport.Transport $ 1.run(Transport.java:177)
在sun.rmi.transport.Transport $ 1.run(Transport.java:174)
在java.security.AccessController.doPrivileged(Native Met hod)
at sun.rmi.transport.Transport.serviceCall(Transport.java:173)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:553)
at sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run0(TCPTransport.java:808)
at sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run(TCPTransport.java:667)
在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:603)$ b $在java.lang.Thread .run(Thread.java:722)
原因:java.sql.SQLException:意外的标记:语句中的NEXTVAL [/ *动态本机SQL查询* / SELECT nextval('campagne_sequence')]
at org.hsqldb.jdbc.Util.throwError(Unknown Source)
at org.hsqldb.jdbc.jdbcPreparedStatement。< init>(Unknown Source)
at org.hsqldb.jdbc.jdbcConnection.prepareStatement(Unknown源)
在org.apache.commons.dbcp.DelegatingConnect ion.prepareStatement(DelegatingConnection.java:171)
在org.apache.commons.dbcp.PoolingDataSource $ PoolGuardConnectionWrapper.prepareStatement(PoolingDataSource.java:278)
在org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:452)
at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:161)
在org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1700)
在org.hibernate.loader.Loader.doQuery(Loader.java:801)
在org.hibernate.loader .Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
at org.hibernate.loader.Loader.doList(Loader.java:2533)
... 68 more
/ *动态原生SQL查询* / / code>查询不是由方言生成的,而是由本地SQL查询生成的,因此f查询查询将解决问题。



查看项目代码,查看是否有任何使用nextval调用序列的本机查询。


I have webapps deployed on a Jetty server and connected to HSQLDB databases located on the HSQLDB server. I get this error when I try to create an entity:

ERROR org.hibernate.util.JDBCExceptionReporter Unexpected token: NEXTVAL in statement [/* dynamic native SQL query */ SELECT nextval('campagne_sequence')]

I initialize the sequence as follows:

CREATE SEQUENCE PUBLIC.CAMPAGNE_SEQUENCE START WITH 1 INCREMENT BY 1

In my webapp, I set the Hibernate dialect with org.hibernate.dialect.HSQLDialect

I checked the syntax to create a sequence and it's correct. I'm using hsqldb-1.8.0.10 and I also checked if the syntax have changed for the next version, it didn't.

I know the correct syntax is NEXT VALUE and not NEXTVAL as in PostgreSQL, but I don't how to fix it. Can anyone help me with this? Thanks

Edit:

In test-environment, everything works fine. All my tests run fine. But in dev-environment, I get the error when I try to create a Campagne. There is a test which creates one too and it works. So it should work with hsqldb-1.8.0.10 version.

I tried to add the String ;sql.syntax_pgs=true after the database URL, didn't work.

Edit:

This is the full stack trace I get:

2014-01-22 10:24:22,813 [RMI TCP Connection(6)-127.0.0.1] WARN  org.hibernate.util.JDBCExceptionReporter SQL Error: -11, SQLState: 37000
2014-01-22 10:24:22,820 [RMI TCP Connection(6)-127.0.0.1] ERROR org.hibernate.util.JDBCExceptionReporter Unexpected token: NEXTVAL in statement [/* dynamic native SQL query */ SELECT nextval('campagne_sequence')]
2014-01-22 10:24:22,827 [RMI TCP Connection(6)-127.0.0.1] WARN  org.springframework.remoting.support.RemoteInvocationTraceInterceptor Processing of RmiServiceExporter remote call resulted in fatal exception: com.square.core.service.interfaces.CampagneService.creerCampagne
org.hibernate.exception.SQLGrammarException: could not execute query
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:92)
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
    at org.hibernate.loader.Loader.doList(Loader.java:2536)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
    at org.hibernate.loader.Loader.list(Loader.java:2271)
    at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:316)
    at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1842)
    at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:165)
    at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:157)
    at org.hibernate.impl.AbstractQueryImpl.uniqueResult(AbstractQueryImpl.java:859)
    at com.square.core.dao.implementations.CampagneDaoImplementation.rechercherSequence(CampagneDaoImplementation.java:169)
    at com.square.core.util.sequence.CampagneSequenceUtilImpl.rechercherSequence(CampagneSequenceUtilImpl.java:32)
    at com.square.core.service.implementations.CampagneServiceImplementation.creerCampagne(CampagneServiceImplementation.java:156)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    at $Proxy263.creerCampagne(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
    at org.springframework.security.intercept.method.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:66)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    at $Proxy264.creerCampagne(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
    at org.springframework.remoting.support.RemoteInvocationTraceInterceptor.invoke(RemoteInvocationTraceInterceptor.java:77)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    at $Proxy263.creerCampagne(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.springframework.remoting.support.RemoteInvocation.invoke(RemoteInvocation.java:205)
    at org.springframework.security.context.rmi.ContextPropagatingRemoteInvocation.invoke(ContextPropagatingRemoteInvocation.java:103)
    at org.springframework.remoting.support.DefaultRemoteInvocationExecutor.invoke(DefaultRemoteInvocationExecutor.java:38)
    at org.springframework.remoting.support.RemoteInvocationBasedExporter.invoke(RemoteInvocationBasedExporter.java:78)
    at org.springframework.remoting.rmi.RmiBasedExporter.invoke(RmiBasedExporter.java:72)
    at org.springframework.remoting.rmi.RmiInvocationWrapper.invoke(RmiInvocationWrapper.java:72)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    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:553)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:808)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:667)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)
Caused by: java.sql.SQLException: Unexpected token: NEXTVAL in statement [/* dynamic native SQL query */ SELECT nextval('campagne_sequence')]
    at org.hsqldb.jdbc.Util.throwError(Unknown Source)
    at org.hsqldb.jdbc.jdbcPreparedStatement.<init>(Unknown Source)
    at org.hsqldb.jdbc.jdbcConnection.prepareStatement(Unknown Source)
    at org.apache.commons.dbcp.DelegatingConnection.prepareStatement(DelegatingConnection.java:171)
    at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.prepareStatement(PoolingDataSource.java:278)
    at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:534)
    at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:452)
    at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:161)
    at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1700)
    at org.hibernate.loader.Loader.doQuery(Loader.java:801)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
    at org.hibernate.loader.Loader.doList(Loader.java:2533)
    ... 68 more

解决方案

Based on the QUERY comment /* dynamic native SQL query */ the query is not generated by the dialect but by a native SQL query, so fixing the query would solve the problem.

Have a look at the project code to see if there any native queries calling sequences using nextval.

这篇关于HSQL序列的语法问题:`NEXTVAL`而不是`NEXT VALUE`的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆