简体   繁体   English

Spring Hibernate:org.hibernate.exception.SQLGrammarException

[英]Spring hibernate: org.hibernate.exception.SQLGrammarException

My DAO layer code is as follows: 我的DAO层代码如下:

package com.app.dao;
import javax.annotation.Resource;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;
import com.app.pojo.InterviewerPojo;

@Repository("interviewer_details_dao")
public class InterviewerDetailsDaoImpl implements InterviewerDetailsDao {

    @Resource(name="sessionFactory")
    private SessionFactory factory;
    /*private HibernateTemplate template;
    public void setSessionFactory(){
        template = new HibernateTemplate(factory);
    }*/
    /*private HibernateTemplate template = new HibernateTemplate(sessionFactory);*/
    @Override
    public void saveInterviewDetails(InterviewerPojo interviewerPojo) {

/*      Session sess = factory.getCurrentSession();
        try{
            sess.getTransaction().wasCommitted();
        Transaction trans = sess.beginTransaction();
        System.out.println("a");
        sess.saveOrUpdate(interviewerPojo);
        sess.getTransaction().commit();}
        catch(Exception e){
            throw e;
        }*/
        System.out.println("b");
        factory.getCurrentSession().save(interviewerPojo);
    /*  System.out.println(interviewerPojo);
        template.saveOrUpdate(interviewerPojo);
        System.out.println("b");*/

        System.out.println("done");

    }

}

the same code as above was running if i am getting the values from database as follows sessionFactory.getCurrentSession().createQuery("select m from emp m).list; But as I writing another page to insert values then it is having problem * As you can see i used same concept, I populated MODEL(POJO) class by another MODEL(pojo) which i have taken from database by above query * and now debugging goes upto "template.saveOrUpdate" and throws exception as follows 如果我要从数据库中获取值,则运行与上述相同的代码,如下所示: sessionFactory.getCurrentSession()。createQuery(“从emp m中选择m).list; 但是,当我编写另一页来插入值时,则出现了问题 * 如您所见,我使用了相同的概念,我通过上面的查询 * 从数据库获取的另一个MODEL(pojo)填充了MODEL(POJO)类 ,现在调试升至“ template.saveOrUpdate”并抛出异常,如下所示

org.hibernate.exception.SQLGrammarException: You have an error in your SQL syntax; org.hibernate.exception.SQLGrammarException:您的SQL语法有错误。 check the manual that corresponds to your MySQL server version for the right syntax to use near 'value for hibernate_sequence' at line 1 at org.hibernate.exception.internal.SQLStateConverter.convert(SQLStateConverter.java:100) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:129) at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81) at $Proxy24.executeQuery(Unknown Source) at org.hibernate.id.SequenceGenerator.generateHolder(SequenceGenerator.java:112) at org.hibernate.id.SequenceHiLoGenerator$1.getNextValue(SequenceHiLoGenerator.java:85) at org.hibernate.id.enhanced.OptimizerFactory$LegacyHiLoAlgorithmOptimizer.generate(OptimizerFactory.java:350) at org.hibernate.id.SequenceHiLoGenerat 检查与您的MySQL服务器版本对应的手册以获取正确的语法,以在org.hibernate.engine的org.hibernate.exception.internal.SQLStateConverter.convert(SQLStateConverter.java:100)的第1行附近使用“ hibernate_sequence的值” org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)上的org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler上的.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)处的.continueInvocation(AbstractStatementProxyHandler.java:129)在org.hibernate.id.SequenceGenerator处的$ Proxy24.executeQuery(Unknown Source)处。 org.hibernate.id.SequenceHiLoGenerator $ 1.getNextValue(SequenceHiLoGenerator.java:85)的org.hibernate.id.enhanced.OptimizerFactory $ LegacyHiLoAlgorithmOptimizer.generate(OptimizerFactory.java:350)的generateHolder(SequenceGenerator.java:112) hibernate.id.SequenceHiLoGenerat or.generate(SequenceHiLoGenerator.java:82) at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:120) at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:204) at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55) at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:189) at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:49) at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90) at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:642) at org.hibernate.internal.SessionImpl.save(SessionImpl.java:635) at org.hibernate.internal.SessionImpl.save(SessionImpl.java:631) at com.app.dao.Interview org.org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:120)或org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:204)处的generate(SequenceHiLoGenerator.java:82) .hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55)位于org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:189)位于org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate( .java:49),位于org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90),位于org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:642),位于org.hibernate.internal.SessionImpl。在com.app.dao.Interview上的org.hibernate.internal.SessionImpl.save(SessionImpl.java:631)处保存(SessionImpl.java:635) erDetailsDaoImpl.saveInterviewDetails(InterviewerDetailsDaoImpl.java:40) at com.app.service.SaveInterviewerDetailsServiceImpl.saveDetails(SaveInterviewerDetailsServiceImpl.java:25) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.springframework.aop.framework com.app.service.SaveInterviewerDetailsS​​erviceImpl.saveDetails(SaveInterviewerDetailsS​​erviceImpl.java:25)处的erDetailsDaoImpl.saveInterviewDetails(InterviewerDetailsDaoImpl.java:40)在sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)处在sun.reflect.NativeMethodAccessorImpl.Invoke0(Native Method) )处org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)处java.lang.reflect.Method.invoke(未知源)处sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)上的.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java :110)org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)at org.springframework.aop.framework .JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) at $Proxy19.saveDetails(Unknown Source) at com.app.controllers.EmployeePromoteController.validateDetails(EmployeePromoteController.java:67) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617) at org.springframework.web.servlet.mvc.method.annotat .JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)位于$ Proxy19.saveDetails(未知源)位于com.app.controllers.EmployeePromoteController.validateDetails(EmployeePromoteController.java:67)位于sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法) org.springframework.web.method.support.InvocableHandlerMethod处java.lang.reflect.Method.invoke处sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源)处的sun.reflect.NativeMethodAccessorImpl.invoke(未知源)。 org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod。 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)的org.springframework.web.servlet.mvc.method.annotat的java:96) ion.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789) at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalin org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.org)上的ion.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)。 org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)的org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)的org.springframework.web.servlet的java:923) org.apache中的javax.servlet.http.HttpServlet.service(HttpServlet.java:647)处的.FrameworkServlet.doPost(FrameworkServlet.java:789)在javax.servlet.http.HttpServlet.service(HttpServlet.java:728)处位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)的catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java: 222),网址为org.apache.catalin a.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:931) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(U org.apache.catalina.authalicator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)的org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:的a.core.StandardContextValve.invoke(StandardContextValve.java:123) 171)在org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:931)在org.apache.catalina.valves.AccessLogValve.invoke(AccessReportValve.java:931)在org.apache.catalina.core.StandardEngineValve org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)的org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)的.invoke(StandardEngineValve.java:118) org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:312)处的apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:589)在java.util.concurrent.ThreadPoolExecutor.runWorker( java.util.concurrent.ThreadPoolExecutor $ Worker.run(U上的未知源)(U.java.lang.Thread.run(U上的未知源) nknown Source) Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; 原因:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误; check the manual that corresponds to your MySQL server version for the right syntax to use near 'value for hibernate_sequence' at line 1 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at com.mysql.jdbc.Util.handleNewInstance(Util.java:407) at com.mysql.jdbc.Util.getInstance(Util.java:382) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3593) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3525) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1986) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2626) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2111) at com.mysql.jdbc. 检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native方法)的sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native方法)的第1行附近使用“ hibernate_sequence的值” sun.reflect.DelegatingConstructorAccessorImpl.newInstance(未知源)位于com.mysql.jdbc.Util.handleNewInstance(Util.java:407)处的com.mysql.jdbc.Util.handleNewInstance(Util.java:407)处的java.lang.reflect.Constructor.newInstance(未知源) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)处com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3593)处的.getInstance(Util.java:382)。 com.mysql.jdbc上的MysqlIO.checkErrorPacket(MysqlIO.java:3525)com.mysql.jdbc上的MysqlIO.sendCommand(MysqlIO.java:1986)com.mysql.jdbc上的com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140) com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2111)的com.mysql.jdbc的.ConnectionImpl.execSQL(ConnectionImpl.java:2626) PreparedStatement.executeQuery(PreparedStatement.java:2273) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:122) ... 61 more 位于org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)的PreparedStatement.executeQuery(PreparedStatement.java:2273)位于org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement处)。 .reflect.NativeMethodAccessorImpl.invoke0(本机方法)(位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源),位于java.lang.reflect.Method.invoke(未知源)处的sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源) .hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:122)... 61更多


POJO source code: POJO源代码:

package com.app.pojo; 
import java.io.Serializable; 
import javax.persistence.*; 

@SuppressWarnings("serial") 
@Entity @Table(name="interviewer") 
public class InterviewerPojo implements Serializable {
    private int eid;

    private int vid; 

    @Id @GeneratedValue(strategy=GenerationType.SEQUENCE) 
    private int i_eid; 

    private String i_name; 

    private String password; 

    public int getEid() { 
        return eid; 
    } 

    public void setEid(int eid) { 
        this.eid = eid; 
    } 
}

Hibernate config: 休眠配置:

<property name="hibernateProperties"> 
    <props>
        <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
        <prop key="hibernate.formatsql">true</prop>
        <prop key="hibernate.showsql">true</prop>
        <prop key="hibernate.hbm2ddl.auto">validate</prop>
    </props> 
</property>   

In your error log, it showed that you're using MySQL. 在错误日志中,它表明您正在使用MySQL。 However, you configured Hibernate dialect was HSQLDialect. 但是,您配置的Hibernate方言是HSQLDialect。

org.hibernate.dialect.HSQLDialect org.hibernate.dialect.HSQLDialect

You should remove this dialect property, Hibernate can automatically detect the right dialect through JDBC driver. 您应该删除该方言属性,Hibernate可以通过JDBC驱动程序自动检测正确的方言。 Or you modify to the correct dialect on your own. 或者您自己修改为正确的方言。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Spring MVC JPA异常org.hibernate.exception.SQLGrammarException - Spring MVC JPA exception org.hibernate.exception.SQLGrammarException org.hibernate.exception.SQLGrammarException:无法准备语句— Spring ROO - org.hibernate.exception.SQLGrammarException: could not prepare statement — Spring ROO JPA 异常:org.hibernate.exception.SQLGrammarException - JPA Exception: org.hibernate.exception.SQLGrammarException 获取异常:org.hibernate.exception.sqlgrammarexception - Getting Exception : org.hibernate.exception.sqlgrammarexception 获取异常org.hibernate.exception.SQLGrammarException: - getting exception org.hibernate.exception.SQLGrammarException: InvalidDataAccessResourceUsageException:org.hibernate.exception.SQLGrammarException: - InvalidDataAccessResourceUsageException: org.hibernate.exception.SQLGrammarException: org.hibernate.exception.SQLGrammarException:无法插入,使用mysql休眠 - org.hibernate.exception.SQLGrammarException: could not insert, hibernate with mysql org.hibernate.exception.SQLGrammarException:休眠不会加入列 - org.hibernate.exception.SQLGrammarException: hibernate will not join column 通过Hibernate使用MySQL:org.hibernate.exception.SQLGrammarException - using MySQL by Hibernate : org.hibernate.exception.SQLGrammarException 带有MySQL的Hibernate错误org.hibernate.exception.SQLGrammarException - Hibernate error org.hibernate.exception.SQLGrammarException with MySQL
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM