org.springframework.dao.EmptyResultDataAccessException:不存在ID为x的类com.jea.user.User实体

时间:2019-03-21 13:55:33

标签: java spring-boot spring-security spring-data-jpa

问题

我在带有JPA和Spring Security的Spring Boot中拥有一个REST API。当我尝试通过ID删除数据库中的现有用户对象时,收到以下错误消息:

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

我作为路径变量提供给该方法的ID与获取所有用户时返回的ID完全相同。 在我的Java模型中,ID被保存为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 :(得分:0)

我将用户模型中ID的注释更改为此,现在可以正常工作了! 因此希望其他人会发现这个答案非常有用。

@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;