Pergunta

I have a problem; because of I was Unable to get results in the roo project I was doing, I decided to start again with a tutorial. Everything went well until I tried to delete an item in the database (related with others in the db).(Although Spring Roo entities are configurated on all cascade)

URL TUTORIAL: http://docs.spring.io/spring-roo/reference/html/beginning.html (until 2.9(step 6))

It gave me the following error:

Exception Message

org.hibernate.exception.ConstraintViolationException: could not execute statement; 
nested exception is javax.persistence.PersistenceException: 
org.hibernate.exception.ConstraintViolationException: could not execute statement

Exception Stack Trace

org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:321)
org.springframework.orm.jpa.DefaultJpaDialect.translateExceptionIfPossible(DefaultJpaDialect.java:121)
org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:517)
org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:755)
org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:724)
org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:475)
org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:270)
org.springframework.transaction.aspectj.AbstractTransactionAspect.ajc$around$org_springframework_transaction_aspectj_AbstractTransactionAspect$1$2a73e96c(AbstractTransactionAspect.aj:63)
com.project.domain.Base_Roo_Jpa_ActiveRecord.ajc$interMethod$com_project_domain_Base_Roo_Jpa_ActiveRecord$com_project_domain_Base$remove(Base_Roo_Jpa_ActiveRecord.aj:71)
com.project.domain.Base.remove(Base.java:1)
com.project.domain.Base_Roo_Jpa_ActiveRecord.ajc$interMethodDispatch1$com_project_domain_Base_Roo_Jpa_ActiveRecord$com_project_domain_Base$remove(Base_Roo_Jpa_ActiveRecord.aj)
com.project.web.BaseController_Roo_Controller.ajc$interMethod$com_project_web_BaseController_Roo_Controller$com_project_web_BaseController$delete(BaseController_Roo_Controller.aj:80)
com.project.web.BaseController.delete(BaseController.java:1)
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.doDelete(FrameworkServlet.java:860)
javax.servlet.http.HttpServlet.service(HttpServlet.java:653)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:180)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:74)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
java.lang.Thread.run(Thread.java:744)

this is the DB: http://docs.spring.io/spring-roo/reference/html/images/pizza.png

So I can't delete even with sql or phpmyadmin site. Please if anyone could help me, I would be very grateful.

LOG.ROO

// Spring Roo 1.2.5.RELEASE [rev 8341dc2] log opened at 2014-02-21 11:31:40
project --topLevelPackage com.project --projectName PizzaProject --java 7 --packaging WAR
// Spring Roo 1.2.5.RELEASE [rev 8341dc2] log closed at 2014-02-21 11:31:59
// Spring Roo 1.2.5.RELEASE [rev 8341dc2] log opened at 2014-02-21 11:32:07
hint
jpa setup --provider HIBERNATE --database MYSQL --databaseName springroo
entity jpa --class ~.domain.Topping --testAutomatically 
field string --fieldName name --notNull --sizeMin 2
entity jpa --class ~.domain.Base --testAutomatically 
field string --fieldName name --notNull --sizeMin 2
entity jpa --class ~.domain.Pizza --testAutomatically 
field string --fieldName name --notNull --sizeMin 2
field number --fieldName price --type java.lang.Float
field set --fieldName toppings --type ~.domain.Topping
field reference --fieldName base --type ~.domain.Base
entity jpa --class ~.domain.PizzaOrder --testAutomatically 
field string --fieldName name --notNull --sizeMin 2
field string --fieldName address --notNull --sizeMax 30
field number --fieldName total --type java.lang.Float
field date --fieldName deliveryDate --type java.util.Date
field set --fieldName pizzas --type ~.domain.Pizza
perform test
web mvc setup
web mvc all --package ~.web
// Spring Roo 1.2.5.RELEASE [rev 8341dc2] log closed at 2014-02-21 11:58:48

I have created only the database, and hibernate/roo the tables. Hibernate was set up to hibernate.hbm2ddl.auto. but then I changed to update in order to keep the records.

Foi útil?

Solução

I guess you were trying to delete a record that was referring a record from other table.

When you delete a PizzaOrder it should work fine. But with some data existing in PizzaOrder if you try to delete the Pizza, you cannot do it as it was not configured to cascade on delete.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top