org.springframework.dao.EmptyResultDataAccessException: нет сущности класса com.jea.user.User с идентификатором x - PullRequest
0 голосов
/ 21 марта 2019

ПРОБЛЕМА

У меня есть REST API в Spring Boot с JPA и Spring Security.Когда я пытаюсь удалить существующий объект пользователя в моей базе данных по идентификатору, я получаю следующее сообщение об ошибке:

org.springframework.dao.EmptyResultDataAccessException: No class com.jea.user.User entity with id 3754c59a-20c5-4c6a-8ddd-62fc49809946 exists

Идентификатор, который я даю методу в качестве переменной пути, точно совпадает с идентификаторомчто я вернусь, если я получу всех пользователей.В моих моделях Java идентификатор сохраняется как UUID, а в базе данных JPA создает столбец BINARY (255).

НИЖЕ ЗДЕСЬ МОЙ ОБЪЕКТ ПОЛЬЗОВАТЕЛЯ JSON, НАХОДЯЩИЙСЯ В БАЗЕ ДАННЫХ

{
    "id": "3754c59a-20c5-4c6a-8ddd-62fc49809946",
    "profilePicture": null,
    "username": "svennieboy",
    "password": "$2a$10$iZBq8gRsIPqYShu03qJ/2Ou4FWpRPMCs4kqrfo9zIcXozchR41yRC",
    "email": "s@live.nl",
    "role": "ROLE_USER",
    "location": null,
    "website": null,
    "biography": null,
    "allTweets": [],
    "recentTweets": [],
    "followers": [],
    "following": []
}

МОДЕЛЬ ПОЛЬЗОВАТЕЛЯ

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

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

//Removed code for brevity

МЕТОД КОНТРОЛЛЕРА ПОЛЬЗОВАТЕЛЯ

@DeleteMapping("/users/{id}")
    public ResponseEntity<String> deleteUser(@PathVariable UUID id) {
        userService.deleteUser(id);
        return new ResponseEntity<>("User deleted", HttpStatus.OK);
    }

МЕТОД ОБСЛУЖИВАНИЯ ПОЛЬЗОВАТЕЛЯ

 public void deleteUser(UUID id){
        userRepository.deleteById(id);
    }

ПОЛЬЗОВАТЕЛЬСКОЕ Хранилище

public interface UserRepository extends CrudRepository<User, UUID> {
}

Пожалуйста, объясните мне, что происходит, потому что я ничего не понимаю.

1 Ответ

0 голосов
/ 21 марта 2019

Я изменил свои аннотации своего идентификатора в модели User на это, и теперь оно работает! Поэтому, надеюсь, другие люди сочтут этот ответ очень полезным.

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

    @Id
    @GeneratedValue( generator = "uuid2" )
    @GenericGenerator( name = "uuid2", strategy = "uuid2" )
    @Column( name = "id", columnDefinition = "BINARY(16)" )
    private UUID id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...