Kseigo_KS
@Kseigo_KS (Kondo Seigo)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

【SpringBoot】Stream(map)でMap<String,Object>をキャストしたい

解決したいこと

SpringBootでタスク管理アプリを作成しています。
その中でユーザを登録し、その一覧をWebアプリ上に表示する機能を実装中にエラーが発生しました。
解決方法を教えてください。

発生している問題・エラー

class java.lang.String cannot be cast to class java.lang.Integer (java.lang.String and java.lang.Integer are in module java.base of loader 'bootstrap')

該当するソースコード

TaskListDao.java

public List<User> find() {
        String sql = "SELECT * FROM ACCOUNT";
        List<Map<String, Object>> result = jdbcTemplate.queryForList(sql);
        List<User> users = result.stream()
                .map((Map<String, Object> row) -> new User(
                        (Integer) row.get("userId"),
                        row.get("userName").toString(),
                        (Integer) row.get("userAge")))
                .toList();

         return users;
    }

HomeController.java

record User(Integer id,String name, Integer age) {}
    Integer userId;
    @GetMapping("/test")
    public String test(@RequestParam("name") String name, @RequestParam("age") Integer age,Model model) {
        userId = userId + 1;
        User u = new User(userId,name,age);
        dao.userAdd(u);
        model.addAttribute("user_id", userId);
        model.addAttribute("user_name", u.name());
        model.addAttribute("user_age", u.age());
        return "greeting";
    }

    @GetMapping("/greeting")
    public String greeting(Model model) {
        List<User> users = dao.find();
        model.addAttribute("users",users);
        return  "greeting";
    }

データベースにINSERTするところまではできていますが、登録したアカウントの一覧を出力をする際にのTaskListDaoクラスのMap内でObject型をInteger型にキャストしたところがエラーの原因と考えております。

自分で試したこと

1.公式ドキュメントを参照し、キャストできるメソッドを確認したが該当するものがなかった。
 → https://docs.oracle.com/javase/jp/8/docs/api/java/util/Map.html
2.キャストの記載方法の変更
 型を変更
 →Integerではなくintで受け取るよう変更(ダメもとです)

(int)((Integer) row.get("userId")).intValue(),

かなり初歩的な部分でつまづいてしまいましたが、
正直お手上げ状態です、、
みなさま、お力添えをお願いいたします。

0

2Answer

Comments

  1. @Kseigo_KS

    Questioner

    ご回答ありがとうございます。無事にエラーを解消することができました。
    今一度公式ドキュメントを読む癖をつけられるよう意識していきます!

Your answer might help someone💌