Когда я удаляю данные в Swagger, я получаю исключение DataIntegrityViolationException.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Когда я удаляю данные в Swagger, я получаю исключение DataIntegrityViolationException.

Сообщение Anonymous »

Когда я хочу удалить данные, я получаю эту ошибку в Swagger:
Изображение

Все конечные точки работали, только удаление конечных точек не работает. Я работаю над Base Entity для удобства чтения кода:
package com.cloud.atlas.base.entity;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.SuperBuilder;

import org.springframework.data.annotation.CreatedBy;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedBy;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import javax.persistence.*;

import java.io.Serializable;
import java.time.LocalDateTime;

@SuperBuilder
@EntityListeners({ AuditingEntityListener.class })
@Data
@EqualsAndHashCode
@NoArgsConstructor
@ToString
@MappedSuperclass
public abstract class BaseEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", length = 50)
protected Long id;

@CreatedDate
@Column(name = "created_at")
protected LocalDateTime createdAt;

@LastModifiedDate
@Column(name = "updated_at")
protected LocalDateTime updatedAt;

@Column(name = "deleted_at")
protected LocalDateTime deletedAt;

@Column(name = "is_active", nullable = false)
private boolean isActive = true;

@Column(name = "is_deleted", nullable = false)
private boolean isDeleted = false;

@CreatedBy
@Column(name = "created_by")
private String createdBy;

@LastModifiedBy
@Column(name = "updated_by")
private String updatedBy;

@Version
@Column(name = "version")
private Long version;

@PrePersist
public void onCreate() {
this.createdAt = LocalDateTime.now();
this.updatedAt = LocalDateTime.now();
}

@PreUpdate
public void onUpdate() {
this.updatedAt = LocalDateTime.now();
}

public abstract void update(T entity);
}

И модель разрешений:
@EqualsAndHashCode(callSuper = false)
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@Entity
@Table(name = "permission")
@SQLDelete(sql = "UPDATE permission SET is_deleted = true WHERE id=?")
@Where(clause = "is_deleted=false")
public class Permission extends BaseEntity {

@Column(nullable = false)
private String alias;
@Column
private String author;

@Column
private String title;
@Column
private String description;

@Column
private Integer status;

@Override
public void update(T entity) {
Permission permission = (Permission) entity;
this.alias = permission.alias;
this.title = permission.title;
this.description = permission.description;
this.status = permission.status;
this.author = permission.author;
}
}

Терминал сообщает:
nput: [100]
output: could not delete: [com.cloud.atlas.domain.Permission#100]; SQL [UPDATE permission SET is_deleted = true WHERE id=?]; nested exception is org.hibernate.exception.DataException: could not delete: [com.cloud.atlas.domain.Permission#100]
2024-10-03 10:33:16.710 ERROR 22188 --- [nio-9060-exec-3] GLOBAL_EXCEPTION_HANDLER : An error occurred

org.springframework.dao.DataIntegrityViolationException: could not delete: [com.cloud.atlas.domain.Permission#100]; SQL [UPDATE permission SET is_deleted = true WHERE id=?]; nested exception is org.hibernate.exception.DataException: could not delete: [com.cloud.atlas.domain.Permission#100]

Когда я исследовал эту проблему, в решении говорилось, что если вы используете команду, допускающую значение NULL, вам нужно использовать такую ​​длину: @Column(nullable = false, length = 4096), и это так. не решит мою проблему.
Неправильно, но если я не смогу решить, я добавлю конечную точку мягкого удаления с аннотацией PUT и просто обновлю часть is_deleted до true.
Спасибо за вашу помощь!
Изменить: когда я удаляю эти строки, проблема решается, но удаление больше не является мягким:
@SQLDelete(sql = "UPDATE permission SET is_deleted = true WHERE id=?")
@Where(clause = "is_deleted=false")


Подробнее здесь: https://stackoverflow.com/questions/790 ... nexception
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»