首页 > 解决方案 > 无法使用地图数据保存到数据库

问题描述

在我的应用程序中,我从 DB 获取 Status 对象并将其设置在 User 对象中,最后将 User 保存到数据库中:

Status status = statusRepository.findOne(UserServiceConstants.STATUS_OPEN);
user.setStatus(status);
userRepository.save(user);

这可以 。但是由于状态代码是有限的,我希望状态代码存储在地图中并在我想要的任何地方使用。为此,我在课堂上创建了。

@Configuration
public class StatusConfiguration {

    @Autowired
    StatusRepository statusRepository;

    Map<Integer, Status> statusMap = new HashMap<Integer, Status>();    


    public Map<Integer, Status> getStatusMap() {
        return statusMap;
    }


    public void setStatusMap(Map<Integer, Status> statusMap) {
        this.statusMap = statusMap;
    }


    @PostConstruct
    public void init(){
        List<Status> statusList = new ArrayList<Status>();

        statusList = statusRepository.findAll();
        statusList.forEach(status -> {
            statusMap.put(status.getStatusId(), status);
        });
    }
}

我在需要状态的地方自动装配了这个所以而不是使用

Status status = statusRepository.findOne(UserServiceConstants.STATUS_OPEN);
user.setStatus(status);
userRepository.save(user);

我在用 :

Status status = statusConfiguration.getStatusMap().get(UserServiceConstants.STATUS_OPEN);
user.setStatus(status);
userRepository.save(user);

但我收到错误:

org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist: com.rawtrade.model.Status; nested exception is org.hibernate.PersistentObjectException: detached entity passed to persist: com.rawtrade.model.Status

有人可以帮我吗。我在 Spring Boot 中使用它,我对此并不陌生。

标签: java

解决方案


推荐阅读