minami1
@minami1

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

MySQLのサンプルコードをH2に反映させたい

解決したいこと

MySQLで作成された社員名簿のサンプルコードをH2データベースで使用したところ、エラーが出てしまったので解決方法を教えてください。

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

could not prepare statement [列 "U1_0.id" が見つかりません Column "U1_0.id" not found; SQL statement: select u1_0."id",u1_0."address",u1_0."create_date",u1_0."delete_date",u1_0."name",u1_0."phone",u1_0."update_date" from "user" u1_0 [42122-214]] [select u1_0."id",u1_0."address",u1_0."create_date",u1_0."delete_date",u1_0."name",u1_0."phone",u1_0."update_date" from "user" u1_0]; SQL [select u1_0."id",u1_0."address",u1_0."create_date",u1_0."delete_date",u1_0."name",u1_0."phone",u1_0."update_date" from "user" u1_0]
org.springframework.dao.InvalidDataAccessResourceUsageException: could not prepare statement [列 "U1_0.id" が見つかりません
Column "U1_0.id" not found; SQL statement:

該当するソースコード

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;

import com.example.dto.UserRequest;
import com.example.entity.User;
import com.example.service.UserService;

/**
 * ユーザー情報 Controller
 */
@Controller
public class UserController {
  /**
   * ユーザー情報 Service
   */
  @Autowired
  private UserService userService;
  /**
   * ユーザー情報一覧画面を表示
   * @param model Model
   * @return ユーザー情報一覧画面
   */
  @GetMapping(value = "/user/list")
  public String displayList(Model model) {
    List<User> userlist = userService.searchAll();
    model.addAttribute("userlist", userlist);
    return "user/list";
  }
  /**
   * ユーザー新規登録画面を表示
   * @param model Model
   * @return ユーザー情報一覧画面
   */
  @GetMapping(value = "/user/add")
  public String displayAdd(Model model) {
    model.addAttribute("userRequest", new UserRequest());
    return "user/add";
  }
  /**
   * ユーザー新規登録
   * @param userRequest リクエストデータ
   * @param model Model
   * @return ユーザー情報一覧画面
   */
  @PostMapping("/user/create")
  public String create(@Validated @ModelAttribute UserRequest userRequest, BindingResult result, Model model) {
    if (result.hasErrors()) {
      // 入力チェックエラーの場合
      List<String> errorList = new ArrayList<String>();
      for (ObjectError error : result.getAllErrors()) {
        errorList.add(error.getDefaultMessage());
      }
      model.addAttribute("validationError", errorList);
      return "user/add";
    }
    // ユーザー情報の登録
    userService.create(userRequest);
    return "redirect:/user/list";
  }
  /**
   * ユーザー情報詳細画面を表示
   * @param id 表示するユーザーID
   * @param model Model
   * @return ユーザー情報詳細画面
   */
  @GetMapping("/user/{id}")
  public String displayView(@PathVariable Long id, Model model) {
    return "user/view";
  }
}

すみません、どのソースコードを送ればよいかわからなかったのでCotrollerクラスを
送ります。

自分で試したこと

自分で反映のさせ方を調べましたが、参考になるサイトがなかったため質問させていただきました。お願いいたします。

0

1Answer

エラーメッセージよると、

select u1_0."id",u1_0."address",u1_0."create_date",u1_0."delete_date",u1_0."name",u1_0."phone",u1_0."update_date" from "user" u1_0

のクエリーに対し、Column "U1_0.id" not found ですから、そのテーブルには、"id"という列が存在しないのでは?

select * from u1_0ですべての列が取れると思うので、確認されてはどうですか。

MySQLのサンプルコードをH2に反映させたいについては、知見がありません。すみません。

1Like

Comments

  1. @minami1

    Questioner

    返信いただきありがとうございます。
    返信いただいた内容を確認し、編集したところ、設計できるようになりました。
    ありがとうございました。

Your answer might help someone💌