2013-02-13 69 views
1

這是錯誤錯誤,而試圖將數據插入到數據庫中(Spring和Hibernate)

HTTP Status 500 - Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: Could not execute JDBC batch update; SQL [insert into links (category, xdate, desc, tags, xtime, tittle, url, id) values (?, ?, ?, ?, ?, ?, ?, ?)]; nested exception is org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update 

type Exception report 

message Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: Could not execute JDBC batch update; SQL [insert into links (category, xdate, desc, tags, xtime, tittle, url, id) values (?, ?, ?, ?, ?, ?, ?, ?)]; nested exception is org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update 

description The server encountered an internal error that prevented it from fulfilling this request. 

exception 

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: Could not execute JDBC batch update; SQL [insert into links (category, xdate, desc, tags, xtime, tittle, url, id) values (?, ?, ?, ?, ?, ?, ?, ?)]; nested exception is org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:659) 
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:563) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 

root cause 

org.springframework.dao.InvalidDataAccessResourceUsageException: Could not execute JDBC batch update; SQL [insert into links (category, xdate, desc, tags, xtime, tittle, url, id) values (?, ?, ?, ?, ?, ?, ?, ?)]; nested exception is org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update 
    org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:629) 
    org.springframework.orm.hibernate3.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:793) 
    org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:664) 
    org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754) 
    org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723) 
    org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:412) 
    org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:118) 
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
    org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) 
    com.killerlinks.controllers.LinkformController.save(LinkformController.java:37) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    java.lang.reflect.Method.invoke(Method.java:597) 
    org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doInvokeMethod(HandlerMethodInvoker.java:710) 
    org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:167) 
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:414) 
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:402) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647) 
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:563) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 

root cause 

org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update 
    org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67) 
    org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) 
    org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253) 
    org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266) 
    org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167) 
    org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298) 
    org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27) 
    org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000) 
    org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338) 
    org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106) 
    org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:656) 
    org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754) 
    org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723) 
    org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:412) 
    org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:118) 
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
    org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) 
    com.killerlinks.controllers.LinkformController.save(LinkformController.java:37) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    java.lang.reflect.Method.invoke(Method.java:597) 
    org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doInvokeMethod(HandlerMethodInvoker.java:710) 
    org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:167) 
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:414) 
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:402) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647) 
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:563) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 

root cause 

java.sql.BatchUpdateException: ORA-01747: invalid user.table.column, table.column, or column specification 

    oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:343) 
    oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10657) 
    org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48) 
    org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246) 
    org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266) 
    org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167) 
    org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298) 
    org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27) 
    org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000) 
    org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338) 
    org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106) 
    org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:656) 
    org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754) 
    org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723) 
    org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:412) 
    org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:118) 
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
    org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) 
    com.killerlinks.controllers.LinkformController.save(LinkformController.java:37) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    java.lang.reflect.Method.invoke(Method.java:597) 
    org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doInvokeMethod(HandlerMethodInvoker.java:710) 
    org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:167) 
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:414) 
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:402) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647) 
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:563) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.33 logs. 
Apache Tomcat/7.0.33 

吾道類是

package com.killerlinks.dao; 

import org.hibernate.SessionFactory; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Repository; 

import com.killerlinks.model.Linkform; 

@Repository 
public class LinkformDaoImpl implements LinkformDao 
{ 
    @Autowired 
    SessionFactory sessionFactory; 

    public void insertLink(Linkform linkform) 
    { 
     System.out.println(linkform.getTittle()); 
     System.out.println(linkform.getUrl()); 
     System.out.println(linkform.getCategory()); 
     System.out.println(linkform.getDesc()); 
     System.out.println(linkform.getTags()); 
     System.out.println(linkform.getDate()); 
     System.out.println(linkform.getTime()); 

     sessionFactory.getCurrentSession().saveOrUpdate(linkform); 
    } 

} 

println語句工作正常,當我不插入到數據庫。

sessionFactory.getCurrentSession().saveOrUpdate(linkform); 

當我在上面的程序中使用此語句時出現錯誤。

我Bean類是

package com.killerlinks.model; 

import java.io.Serializable; 

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.Table; 

@Entity 
    @Table(name="links") 
    public class Linkform implements Serializable 
    { 
    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 
    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    @Column(name="id") 
    private Long id; 
    @Column(name="tittle") 
    private String tittle; 
    @Column(name="desc") 
    private String desc; 
    @Column(name="url") 
    private String url; 
    @Column(name="category") 
    private String category; 
    @Column(name="xdate") 
    private String date; 
    @Column(name="xtime") 
    private String time; 
    @Column(name="tags") 
    private String tags; 

    public Long getId() { 
     return id; 
    } 
    public void setId(Long id) { 
     this.id = id; 
    } 
    public String getTittle() { 
     return tittle; 
    } 
    public void setTittle(String tittle) { 
     this.tittle = tittle; 
    } 
    public String getDesc() { 
     return desc; 
    } 
    public void setDesc(String desc) { 
     this.desc = desc; 
    } 
    public String getUrl() { 
     return url; 
    } 
    public void setUrl(String url) { 
     this.url = url; 
    } 
    public String getCategory() { 
     return category; 
    } 
    public void setCategory(String category) { 
     this.category = category; 
    } 
    public String getDate() { 
     return date; 
    } 
    public void setDate(String date) { 
     this.date = date; 
    } 
    public String getTime() { 
     return time; 
    } 
    public void setTime(String time) { 
     this.time = time; 
    } 
    public String getTags() { 
     return tags; 
    } 
    public void setTags(String tags) { 
     this.tags = tags; 
    } 

    @Override 
    public String toString() 
    { 
     return "Linkform [tittle=" + tittle + ", url=" + url + ", category="+ category +", tags="+ tags +", desc="+ desc +"]"; 
    } 
} 

請幫我修復這個bug。

回答

3

列名desc是無效的,因爲它是Oracle中的尊敬詞。解決方法是使用其他名稱作爲列。

+0

它工作完美。非常感謝。 – SKR 2013-02-14 02:27:04

相關問題