首页 > 解决方案 > 如何正确更新集合?

问题描述

这是我尝试过的:

    public Collection<User> updateUsers(Collection<User> users) {
    
            Collection<User> usersUpdated = null;
    
                    users.stream()
                    .filter(u -> userRepository.existsById(u.getId()))
                    .forEach(
                            u -> {
                                    Optional<User> user = userRepository.findById(u.getId());
                                    userRepository.save(user);
                                    usersUpdated.add(userRepository.findById(u.getId()));
                                    logger.debug("Update single " + User.class.getName() + ": " + u);
                            }
                    );
    
            return usersUpdated;
        }

问题在于userRepository.save(user)我在哪里得到以下信息:

Inferred type 'S' for type parameter 'S' is not within its bound; should extend 'com.example.model.User'

我应该如何正确更新该实体的集合?

标签: spring-data-jpa

解决方案


您将收到“推断类型不在其绑定范围内”异常,因为您将 an 传递Optionalsave方法,而不是User对象。

我建议您可以使用 向数据库发送一个请求来保存整个集合CrudRepository.saveAll(),如下所示:

userRepository.saveAll(users);


推荐阅读