首页 > 解决方案 > 春季启动和休眠:更新条目为空的所有列的行

问题描述

我创建了一个查询,该查询选择列为 null 的所有用户:

@Query("SELECT user from User user where user.maths is null")
List <User> findByMathWhereNull();

现在我想用一个简单的方法为每个人计算一些点:

public int calculate(User user){
        int maths = calculateByResults(user);
        maths += calculateByScore(user.getId());
        maths += calculateByBonus(user.getBonus());
        return maths;
    }

现在,我想为每个用户设置数学变量:

public void saveMaths() {
        List<User> users = userRepository.findByMathWhereNull();
        
        // TODO
        // for (maths : user) {do something}

如何将每个数学结果放在正确的列中?

编辑 - 解决方案:

public void saveIndiceFiabilite() {
        List<User> users = userRepository.findByMathWhereNull();

         for (User user : users) {
             int math = calculateMaths(user);
             user.setMahs(maths);
             userRepository.updateUser(maths, user.getId());
         }

    }

标签: sqlspring-boothibernateloops

解决方案


你应该像这样为每个用户设置数学:

    public void saveMaths() {
    List<User> users = organismeRepository.findByMathWhereNull();
    
    // TODO
       for(User user : users){
           int math = calculate(user);
           user.setMath(math);
       }
    

推荐阅读