По крупицам просмотрел весь код, но не могу найти, что не так. Если я делаю запрос почтальона 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
ОШИБКА 7388: Servlet.service() для сервлета [dispatcherServlet] в контексте с путем [] выдал исключение [ошибка обработк ⇐ JAVA
Программисты JAVA общаются здесь
1732348506
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);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79216064/error-7388-servlet-service-for-servlet-dispatcherservlet-in-context-with-p[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия