2014-10-19 3 views
1

이것은 stackoverflow에 대한 첫 번째 게시물입니다! 그러나 나는 UIO의 마스터 학생이므로 많은 도움을 얻은 후에 (심지어 선택하기 만하면) 도움이되지는 않지만 아마도 문제를 더 잘 이해할 수있는 곳으로 향하는 포인터 일 것입니다! 그리고 문제를 보여주는 내 방식이 마음에 들지 않는다면 그 점에 대해 의견을 말하십시오. 그러면 다음에 더 나아질 것입니다!요청 처리에 실패했습니다. 중첩 예외는 org.hibernate.exception.ConstraintViolationException : JDBC 일괄 업데이트를 실행할 수 없습니다.

no.uio.inf5750.assignment2.dao.hibernate.HibernateStudentDao.getAllStudents (HibernateStudentDao.java:54)

코드 : 스택 트레이스에서

HTTP Status 500 - Request processing failed; nested exception is org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update 

type Exception report 

message Request processing failed; nested exception is org.hibernate.exception.ConstraintViolationException: 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.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948) 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:233) 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 

root cause 

org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update 
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:96) 
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) 
org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275) 
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263) 
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:180) 
org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321) 
org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:64) 
org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:1175) 
org.hibernate.impl.SessionImpl.list(SessionImpl.java:1251) 
org.hibernate.impl.QueryImpl.list(QueryImpl.java:102) 
no.uio.inf5750.assignment2.dao.hibernate.HibernateStudentDao.getAllStudents(HibernateStudentDao.java:54) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
java.lang.reflect.Method.invoke(Method.java:606) 
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) 
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 
org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96) 
org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260) 
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94) 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) 
com.sun.proxy.$Proxy13.getAllStudents(Unknown Source) 
no.uio.inf5750.assignment2.service.impl.DefaultStudentSystem.getAllStudents(DefaultStudentSystem.java:168) 
no.uio.inf5750.assignment2.gui.controller.ApiController.jsonAddLocation(ApiController.java:40) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
java.lang.reflect.Method.invoke(Method.java:606) 
org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219) 
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) 
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745) 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686) 
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925) 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936) 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:233) 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 

root cause 

org.h2.jdbc.JdbcBatchUpdateException: Unique index or primary key violation: "CONSTRAINT_INDEX_BA ON PUBLIC.STUDENT(LATITUDE)"; SQL statement: 
update student set name=?, latitude=?, longitude=? where student_id=? [23001-136] 
    org.h2.jdbc.JdbcPreparedStatement.executeBatch(JdbcPreparedStatement.java:1098) 
com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeBatch(NewProxyPreparedStatement.java:1723) 
org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70) 
org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268) 
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263) 
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:180) 
    org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321) 
org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:64) 
org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:1175) 
org.hibernate.impl.SessionImpl.list(SessionImpl.java:1251) 
org.hibernate.impl.QueryImpl.list(QueryImpl.java:102) 
no.uio.inf5750.assignment2.dao.hibernate.HibernateStudentDao.getAllStudents(HibernateStudentDao.java:54) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
java.lang.reflect.Method.invoke(Method.java:606) 
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) 
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 
org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96) 
org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260) 
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94) 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) 
com.sun.proxy.$Proxy13.getAllStudents(Unknown Source) 
no.uio.inf5750.assignment2.service.impl.DefaultStudentSystem.getAllStudents(DefaultStudentSystem.java:168) 
no.uio.inf5750.assignment2.gui.controller.ApiController.jsonAddLocation(ApiController.java:40) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
java.lang.reflect.Method.invoke(Method.java:606) 
org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219) 
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) 
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745) 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686) 
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925) 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936) 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:233) 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 

public Collection<Student> getAllStudents() {  
    Session session = sessionFactory.getCurrentSession();  
    String hql = "from Student";  
    Query query = session.createQuery(hql);  
    return (Collection<Student>)query.list(); <- java:54 
} 

답변

0

제약 조건 위반 예외는 일반적으로 데이터를 삽입하려고 할 때 발생합니다 테이블 행에 설정된 제약 조건을 위반하는 값으로

열에 삽입 된 값이 집합을 위반하지 않는지 확인하십시오. 예를 들어 열에 고유 색인이있는 경우 값이 다른 레코드와 고유해야합니다.

0

쿼리가 플러시를 트리거하여 ConstraintViolationException이 발생합니다. 불행히도 저장 시간에이 오류가 표시되지 않았지만 오류는이 쿼리와 관련이 없습니다.

이 쿼리를 수행하기 전에 삽입물을 조사하십시오. 절대로 (.saveAndFlush()/.save (flush : true))를 저장하여 불량 인서트를 즉시 확인하려고 할 때 플러시를 시도하십시오. Hibernate와 JDBC가 올바른 오류 메시지를 제공하여 정확히 무엇을 잘못했는지 정확하게 알려줄 것입니다. 이 비 특약 제약 위반.

+0

나의 목표는 위도와 경도를 바꿀 수있는 것이었지만, 제 제약으로는 불가능했습니다. 그런 다음이 값을 변경하면 ~ <속성 이름 = "위도"/> <속성 이름 = "경도"/> 신참의 실수를 수정했습니다! 하지만 고마워. –

+0

이것은 많은 사람들이 최대 절전 모드를 좋아하지 않는 이유 중 하나의 대표적인 예이다. Hibernate가 어떻게 생각하는지 이해하지 못한다면, 에러는 명확하지 않은 곳에서 나타나고 잘못된 장소에서 버그를 검색하는 데 수 시간을 낭비 할 수 있습니다. –

관련 문제