- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这样的关系。有一个 Car
表和 CarGroup
表。汽车组表中存放着汽车。我想要的是:当一辆车被移除时,如果它在一个汽车组内,它也应该像往常一样从那里移除。我在我的项目中使用 Spring 和 Hibernate(我下面有一个 PostgreSQL 数据库)。当我想删除一辆车时,我收到以下错误:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: could not delete: [com.aaa.bbb.ccc.Car#2]; SQL [delete from Car where a_id=? and st=?]; constraint [fkbc80f56cb1ece7b8]; nested exception is org.hibernate.exception.ConstraintViolationException: could not delete: [com.aaa.bbb.ccc.Car#2]
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:656)
org.springframework.web.servlet.FrameworkServlet.doDelete(FrameworkServlet.java:582)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368)
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:112)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169)
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
我什至无法像往常一样从 pgadmin(postgresql 控制台)删除汽车。当我这样写时:
delete from Car where a_id=2 and st=2;
我得到的错误如下:
ERROR: update or delete on table "car" violates foreign key constraint "fkac80f56cb1ece7b8" on table "cargroup_car"
DETAIL: Key (a_id)=(2) is still referenced from table "cargroup_car".
********** Error **********
ERROR: update or delete on table "car" violates foreign key constraint "fkac80f56cb1ece7b8" on table "cargroup_car"
SQL state: 23503
Detail: Key (a_id)=(2) is still referenced from table "cargroup_car".
我的 CarGroup
类的代码部分:
@ManyToMany(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}, fetch = FetchType.EAGER)
@JoinTable(name = "cargroup_car", joinColumns = @JoinColumn(name = "ADID"), inverseJoinColumns = @JoinColumn(name = "AID"))
private Set<Car> cars;
编辑:我希望:当我删除一辆车时,我希望它被删除,即使它位于汽车组下。我不想删除汽车组来删除汽车。我如何更改Java端数据库设置(级联类型或将多对多更改为多对一和一对多等)来做到这一点?
PS:我没有编写Java端代码。如果您解释一下,欢迎您。
最佳答案
您无法删除汽车,因为 cargroup_car
表中的一行引用了它。因此,您需要在删除汽车之前删除 cargroup_car 行。
关于java - Hibernate DataIntegrityViolationException 外键违规不允许删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8071626/
我正在使用 Spring 3 来管理数据库事务。每当引发异常时,我都会捕获异常并返回相应的消息。但是当 Spring 提交事务时,异常再次引发并包含在 org.springframework.dao.
我正在使用 Spring Boot 和 MySQL 作为数据库编写简单的 Web 应用程序。代码如下 我有一个实体用户: @Entity @IdClass(UserKey.class) public
我正在编写一个 Spring 应用程序,似乎当我遇到数据库错误时,有时 Hibernate 的 ConstraintViolationException有时会抛出 Spring 的 DataInteg
我有这样的关系。有一个 Car 表和 CarGroup 表。汽车组表中存放着汽车。我想要的是:当一辆车被移除时,如果它在一个汽车组内,它也应该像往常一样从那里移除。我在我的项目中使用 Spring 和
我正在使用 Spring 制作 REST API,但在对其进行单元测试时遇到了麻烦。我编写了一个端点来更新用户组,当我在前端创建一个具有重复名称的组时(unique=true),它确实会发送 409
假设我有以下类(class): class Mapping { @Id long id; String uuid; String object; @ManyTo
我遇到了识别哪个约束触发 DataIntegrityViolationException 的问题。我有两个独特的限制条件:用户名和电子邮件,但我没有找到答案。 我试图找出根本原因异常,但我收到了这条消
目前,我有两个不同的异常被 DataIntegrityViolationException 类捕获: 重复的键。 数据截断:数据对于列来说太长。 我的问题: 我遗漏了哪些案例? 如何区分不同的 Dat
以前的 update() 方法抛出 具有相同标识符值的不同对象已经与 session 关联 所以我将 dao 更改为 merge .现在它给出 org.springframework.dao.Data
项目背景 项目整体采用的是springboot+mybatis 方式。有一次做数据查询的时候。console突然报:DataIntegrityViolationException: Error att
我有 2 个表,Person 和 Phone,它们具有一对一的关系。 **Person** person_id name **Phone** phone_id person_id -- foreign
我有一个带有 Hibernate 的 REST Spring 启动应用程序。为简单起见,我们假设此工作流程: Controller 处理传入请求,调用服务方法 服务方式为@Transactional
我正在使用 org.springframework.data.jpa.repository.JpaRepository 保存方法来保存实体。我认为 save 方法来自 CrudRepository 接
我需要在我的 Spring 3.0 应用程序中显示自定义消息。我有一个带 Hibernate 的数据库,但有几个限制。我对如何以良好的方式处理 DataIntegrityViolationExcept
我需要创建实体,如果它已经存在,还可以选择更新它。如果我捕获DataIntegrityViolationException并尝试在Catch中进行处理,则会收到错误org.hibernate.Asse
我需要创建实体,如果它已经存在,还可以选择更新它。如果我捕获DataIntegrityViolationException并尝试在Catch中进行处理,则会收到错误org.hibernate.Asse
我需要创建实体,如果它已经存在,还可以选择更新它。如果我捕获DataIntegrityViolationException并尝试在Catch中进行处理,则会收到错误org.hibernate.Asse
我正在编写单元测试来使用存储过程测试数据库中失败的更新。我有一个更新表之一的存储过程。根据测试,我在存储过程中发送了不正确的数据(即违反表中完整性约束的数据)。所以我期待 SQLException 但
我正在为 ManyToMany 之间的关系构建示例:User(1) - ()AccessLevel() - (1)Role 我已经在 Java 中使用 hibernate 实现了 3 个类,如下所
正在处理一个 api 调用,该调用会更改数据库中的一些数据。我正在尝试从 api 提供有意义的消息,以防 JPA 层出现异常。在任何 sql 查询运行失败时,我都会从 JPA 收到 DataInteg
我是一名优秀的程序员,十分优秀!