2015-05-22 4 views
0

Я пытаюсь обновить одну таблицу в своей записи, используя session.getCurrentSession(). Save (Bean); И я получаю эту ошибку. Я перекрестно проверил имена таблиц и столбцов в моей базе данных с атрибутами моего класса POJO. Свойство hibernate.hbm2ddl.auto установлено в auto в моем файле конфигурации. Пожалуйста, помогитеHibernate: не удалось выполнить пакетное обновление

SEVERE: Servlet.service() for servlet [spring] in context with path [/PhoneStore] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: Could not execute JDBC batch update; SQL [insert into MOBILEPHONES_TB (BATTERY, BRAND, COLOR, DISPLAY, MEMORY, MODEL_NAME, OS, PRIMARY_CAMERA, PROCESSOR, RESOLUTION, SCREEN_TYPE, SECONDARY_CAMERA, SIM_SIZE, SIM_TYPE, SIZE, MODEL_ID) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]; nested exception is org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update] with root cause 
java.sql.BatchUpdateException: ORA-01747: invalid user.table.column, table.column, or column specification 

    at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10055) 
    at oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:213) 
    at org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297) 
    at org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297) 
    at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48) 
    at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246) 
    at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:237) 
    at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:141) 
    at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298) 
    at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27) 
    at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000) 
    at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338) 
    at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106) 
    at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:656) 
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754) 
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723) 
    at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:375) 
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:120) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) 
    at $Proxy29.addPhone(Unknown Source) 
    at com.wipro.phonestore.controller.AdminController.addPhone(AdminController.java:21) 
    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.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:174) 
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:421) 
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:409) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) 
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560) 
    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.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    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:953) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) 
    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(Unknown Source) 
+1

Проверьте с помощью инструмента sql, который вы можете выполнить с этим оператором. –

+0

yaa. Я пытаюсь вставить, используя SQL Plus, а также SQL Developer. Я могу вставить записи. –

ответ

1

Я не вижу, как этот оператор может работать в SQL * Plus или SQL Developer.

Название одной из ваших колонок "SIZE" является зарезервированным словом Oracle. Он должен быть заключен в двойные кавычки, чтобы на него ссылались в инструкции INSERT.

INSERT INTO foo ("SIZE") VALUES (?) 
       ^^

Сообщение об ошибке Oracle ORA-1747 довольно ясно о проблеме.

Ссылка: http://docs.oracle.com/cd/B19306_01/em.102/b40103/app_oracle_reserved_words.htm

+0

Я использую HQL для выполнения операции вставки. Итак, как я могу получить операцию вставки? –

+0

Вам нужно будет заставить Hibernate правильно покинуть зарезервированное слово, когда оно используется как идентификатор (например, имя столбца.) Как вы можете заставить Hibernate обернуть двойные кавычки вокруг имени столбца? Этот вопрос задан раньше, ссылка: [http://stackoverflow.com/questions/3364835/automatic-reserved-word-escaping-for-hibernate-tables-and-columns](http://stackoverflow.com/questions/3364835/автоматический зарезервированные слово-спасаясь-для-зимуют столов-и-столбцов) – spencer7593

0

Я изменил свое имя столбца Размер, чтобы Phone_Size и смог вставить запросы. Спасибо. :)

Смежные вопросы