ОШИБКА 7388: Servlet.service() для сервлета [dispatcherServlet] в контексте с путем [] выдал исключение [ошибка обработкJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 ОШИБКА 7388: Servlet.service() для сервлета [dispatcherServlet] в контексте с путем [] выдал исключение [ошибка обработк

Сообщение Anonymous »

По крупицам просмотрел весь код, но не могу найти, что не так. Если я делаю запрос почтальона getUsers, все работает нормально, но когда я делаю запрос POST, я получаю ошибку:
ОШИБКА 7388 --- [myApiPortifolio] [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() для сервлета [dispatcherServlet] в контексте с путем [] выдал исключение [Ошибка обработки запроса: org.springframework.orm.ObjectOptimisticLockingFailureException: строка была обновлена ​​или удалена другой транзакцией (или сопоставление несохраненных значений было неправильным): [com.myapps.myApiPortifolio.entities.User#0eb358b8-93d9-4fe1-a457-8a186d0788aa]] с основной причиной org.hibernate.StaleObjectStateException: строка была обновлена ​​или удалена другой транзакцией (или сопоставление несохраненных значений было неправильным):< /p>
Он не создает пользователя в базе данных, вот мои классы:
Пользовательская сущность
package com.myapps.myApiPortifolio.entities;

import jakarta.persistence.*;

import java.util.List;
import java.util.UUID;

@Entity
@Table(name = "tb_users")
public class User {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private UUID id;

private String username;
private String email;
private String password;

@OneToMany(mappedBy = "user")
private List accounts;

public User() {
}

public User(UUID id, String username, String email, String password) {
this.id = id;
this.username = username;
this.email = email;
this.password = password;
}

public UUID getId() {
return id;
}

public void setId(UUID id) {
this.id = id;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public List getAccounts() {
return accounts;
}

public void setAccounts(List accounts) {
this.accounts = accounts;
}
}

Субъект учетной записи
package com.myapps.myApiPortifolio.entities;

import jakarta.persistence.*;

import java.util.UUID;

@Entity
@Table(name = "tb_accounts")
public class Account {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private UUID id;

private String accountType;

@ManyToOne
@JoinColumn(name = "user_id")
private User user;

public Account() {
}

public Account(UUID id, String accountType) {
this.id = id;
this.accountType = accountType;
}

public UUID getId() {
return id;
}

public void setId(UUID id) {
this.id = id;
}

public String getAccountType() {
return accountType;
}

public void setAccountType(String accountType) {
this.accountType = accountType;
}

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}
}

CreateUserDto
package com.myapps.myApiPortifolio.entities.dtos;

public record CreateUserDto(String username, String email, String password) {
}

Репозиторий пользователей
package com.myapps.myApiPortifolio.repositories;

import com.myapps.myApiPortifolio.entities.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.UUID;

@Repository
public interface UserRepository extends JpaRepository {
}

Пользовательская служба
package com.myapps.myApiPortifolio.services;

import com.myapps.myApiPortifolio.entities.User;
import com.myapps.myApiPortifolio.entities.dtos.CreateUserDto;
import com.myapps.myApiPortifolio.repositories.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.UUID;

@Service
public class UserService {

@Autowired
UserRepository userRepository;

public UUID createUser(CreateUserDto createUserDto) {

// DTO -> ENTITY
User user = new User(
UUID.randomUUID(),
createUserDto.username(),
createUserDto.email(),
createUserDto.password()
);

var createdUser = userRepository.save(user);
return createdUser.getId();
}

public List getUsers() {
return userRepository.findAll();
}
}

Пользовательскийконтроллер
package com.myapps.myApiPortifolio.controllers;

import com.myapps.myApiPortifolio.entities.User;
import com.myapps.myApiPortifolio.entities.dtos.CreateUserDto;
import com.myapps.myApiPortifolio.services.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.net.URI;
import java.util.List;

@RestController
@RequestMapping("/users")
public class UserController {

@Autowired
UserService userService;

@PostMapping
public ResponseEntity createUser(@RequestBody CreateUserDto createUserDto) {

var userId = userService.createUser(createUserDto);

return ResponseEntity.created(URI.create("/users/" + userId)).build();
}

@GetMapping
public ResponseEntity getUsers() {

var users = userService.getUsers();

return ResponseEntity.ok(users);
}
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... ext-with-p
Ответить

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

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

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

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

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