Spring Boot SQL-ошибка при удалении записи с нарушением ограничений с неприемникомJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Spring Boot SQL-ошибка при удалении записи с нарушением ограничений с неприемником

Сообщение Anonymous »

В Spring Boot у меня есть два класса объектов < /p>
import java.time.OffsetDateTime;
import java.util.Set;
import java.util.UUID;
import jakarta.persistence.*;

import lombok.*;
import org.apache.commons.lang3.StringUtils;
import org.cnr.plantvocdb.enums.LeafHabitus;
import org.cnr.plantvocdb.enums.PlantsRanks;

@Entity
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Getter
@Setter
@Table(name = "plants_voc")
public class PlantEntity {

@Id
@GeneratedValue(strategy = GenerationType.UUID)
@Column(name="id", length = 50, nullable = false, updatable = false)
private UUID id;

@Column(name="ipni", length = 50)
private String ipni;

@Setter(AccessLevel.NONE)
@Column(name="full_name_plain", length = 50)
private String fullNamePlain;

@Setter(AccessLevel.NONE)
@Column(name="full_name_no_authors_plain", length = 50)
private String fullNameNoAuthorsPlain;

@Setter(AccessLevel.NONE)
@Column(name="plant_name", length = 30, nullable = false)
private String name;

@Setter(AccessLevel.NONE)
@Column(name="family", length = 30, nullable = false)
private String family;

@Setter(AccessLevel.NONE)
@Column(name="genus", length = 30, nullable = false)
private String genus;

@Setter(AccessLevel.NONE)
@Column(name="species", length = 30, nullable = false)
private String species;

@Column(name="valid_nomenclature")
private boolean validNomenclature;

@Column(name="rank", length = 20)
@Enumerated(EnumType.STRING)
private PlantsRanks rank;

@Column(name="leaf_habitus", length = 20)
@Enumerated(EnumType.STRING)
private LeafHabitus leafHabitus;

@OneToMany(
fetch = FetchType.EAGER,
cascade = CascadeType.ALL,
mappedBy = "plant"
)
private Set
emitter;

@ElementCollection
@CollectionTable(
name = "synonyms", // Nome della tabella intermedia
joinColumns = @JoinColumn(name = "fk_synonyms_plant_id"),
foreignKey = @ForeignKey(name = "FK_synonyms_plant")
)
@Column(name="synonyms")
private Set synonyms;

@Column(name="created_datetime_utc", updatable = false) // creation_datetime_utc
private OffsetDateTime createdDatetimeUTC;

@Column(name="updated_datetime_utc") // last_modified_datetime_utc
private OffsetDateTime updatedDatetimeUTC;

public void setName(String name) {

this.name = StringUtils
.normalizeSpace(name.toLowerCase());
}

public void setFamily(String family) {

this.family = StringUtils
.normalizeSpace(StringUtils
.capitalize(family.toLowerCase()));
}

public void setGenus(String genus) {

this.genus = StringUtils
.normalizeSpace(StringUtils
.capitalize(genus.toLowerCase()));
}

public void setSpecies(String species) {

this.species = StringUtils
.normalizeSpace(species.toLowerCase());
}

public void setFullNamePlain(String fullNamePlain) {
this.fullNamePlain = StringUtils
.normalizeSpace(fullNamePlain);
}

public void setFullNameNoAuthorsPlain(String fullNameNoAuthorsPlain) {
this.fullNameNoAuthorsPlain = StringUtils
.normalizeSpace(fullNameNoAuthorsPlain);
}
}
< /code>
и < /p>
import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;

@Entity
@Table(name="emitters")
@Getter
@Setter
public class PlantEmitterEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(name="emits", length = 50)
private boolean emits;

@Column(name="doi")
private String doi;

@ManyToOne(
fetch = FetchType.LAZY,
cascade = CascadeType.ALL
)
@JoinColumn(
name = "fk_emitters_plant_id",
nullable = false,
updatable = true,
insertable = true,
foreignKey = @ForeignKey(name = "FK_emitters_plant"))
private PlantEntity plant;

}
< /code>
Я разработал серию конечных точек в контроллере, чтобы выполнить операции классического Get, Pult и Update. Однако, когда я пытаюсь удалить запись завода, используя свой идентификатор UUID, я получаю эту ошибку: < /p>
org.postgresql.util.PSQLException: ERROR: null value in column "fk_emitters_plant_id" of relation "emitters" violates not-null constraint

Я полагаю, что это связано с ограничением, которое не позволяет мне удалить посадку вместе с Plantemitterentity
контроллер < /p>
@DeleteMapping("/{id}")
public ResponseEntity delete(@PathVariable("id") UUID id){
Optional optionalResponsePlantDTO = service.findPlantById(id);
if(optionalResponsePlantDTO.isPresent()){
service.delete(optionalResponsePlantDTO.get());
return ResponseEntity
.status(HttpStatus.OK)
.body(optionalResponsePlantDTO.get());
} else {
throw new PlantNotFoundException(
MessageFormat.format("Plant not found with id code: {0}.", id.toString())
);
}
}

service
public void delete(ResponsePlantDTO plant){
PlantEntity plantEntity = mapper.map(plant, PlantEntity.class);
repository.delete(plantEntity);
}


Подробнее здесь: https://stackoverflow.com/questions/794 ... -violation
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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