Spring Boot JPA: delete () возвращает 204, но запись не удаляется из базы данныхJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Spring Boot JPA: delete () возвращает 204, но запись не удаляется из базы данных

Сообщение Anonymous »

Как и в заголовке - метод удаления не удаляет запись из базы данных, но контроллер возвращает код 204, что означает, что запрос был обработан правильно.@Transactional
public void deleteFlashcardSet(Long userId, Long flashcardSetId) {

entityManager.clear();

FlashcardSet flashcardSet = flashcardSetRepository.findById(flashcardSetId)
.orElseThrow(() -> new ResourceNotFoundException("Flashcard set not found"));

if(!flashcardSet.getUser().getUserId().equals(userId)){
throw new UnauthorizedException("User does not have permission to delete this flashcard set");
}

flashcardSetRepository.delete(flashcardSet);
}
< /code>
Entity: < /p>
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "FlashcardSets")
public class FlashcardSet {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long flashcardSetId;
private String name;
private Date createdAt;

@ManyToOne
@JoinColumn(name = "user_id", nullable = false)
@JsonBackReference
private User user;

@OneToMany(mappedBy = "flashcardSet", cascade = CascadeType.ALL, orphanRemoval = true)
@JsonManagedReference
private List flashcards;

@PrePersist
protected void onCreate() {
this.createdAt = new Date();
}
}
< /code>
Entity (я не знаю, если необходимо, но я тоже добавлю это): < /p>
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "Flashcards")
public class Flashcard {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long flashcardId;
private String frontContent;
private String backContent;
private int repetitionCount;
private Date createdAt;
private int xpReward;

@ManyToOne
@JoinColumn(name = "flashcard_set_id", nullable = false)
@JsonBackReference
private FlashcardSet flashcardSet;

@PrePersist
protected void onCreate() {
this.createdAt = new Date();
}

}
< /code>
Из того, что я проверил до сих пор, delete () работает только в двух случаях: < /p>

Добавление EntityManager.clear () (как в коде службы FlashCardset выше) < /li>
Создание прямого запроса в DataBase: < /li>





@Modifying
@Query("DELETE FROM FlashcardSet fs WHERE fs.flashcardSetId = :flashcardSetId AND fs.user.userId = :userId")
void deleteByIdAndUserId(@Param("flashcardSetId") Long flashcardSetId, @Param("userId") Long userId);
< /code>
, а затем с использованием deletebyidanduserid () в службе вместо регулярного delete ().
Я думаю, что проблема находится где -то в контексте постоянства. Я не знаю, хорошо ли мое решение или это можно сделать лучше. Кстати DeleteByid тоже не работает.

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Spring Boot JPA: delete () возвращает 204, но запись не удаляется из базы данных
    Anonymous » » в форуме JAVA
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Spring Boot JPA: delete () возвращает 204, но запись не удаляется из базы данных
    Anonymous » » в форуме JAVA
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Почему моя запись не удаляется из базы данных
    Anonymous » » в форуме Php
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Почему моя запись не удаляется из базы данных
    Anonymous » » в форуме Html
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous
  • Почему моя запись не удаляется из базы данных
    Anonymous » » в форуме MySql
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous

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