前提
一対多のテーブルで子Entityに親Entityのデータを格納したいのですが、
方法がわからず手こずっています。
SQL文でのテーブル結合ができていることは確認済みです。
実現したいこと
リポジトリーで子Entityに親Entityのデータを格納する。
発生している問題・エラーメッセージ
Mapper
@Select("SELECT inventorys.id, products_id, quantity, report_date, created_at, updated_at, name " + "FROM inventorys " + "INNER JOIN products ON inventorys.products_id = products.id " + "WHERE report_date = #{sqlDate}") List<Inventory> findByDate(Date sqlDate); ←子クラスのInventory productNameがNullになる
該当のソースコード
子クラス
@Data public class Inventory { private int id; private int productsId; private Product productName; private float quantity; private Date reportDate; private LocalDateTime createdAt; private LocalDateTime updatedAt; }
親クラス
@Data public class Product { private int id; private String name; private List<Inventory> inventorys; }
schema.sql
DROP TABLE IF EXISTS inventorys; CREATE TABLE IF NOT EXISTS inventorys( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, products_id INT NOT NULL, quantity FLOAT NOT NULL, report_date DATE NOT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); DROP TABLE IF EXISTS products; CREATE TABLE IF NOT EXISTS products( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, name VARCHAR(100) NOT NULL );
Controller
@PostMapping("/id_search") public String search( @Validated @ModelAttribute InventorySearchReq inventorySearchReq, Model model ) { java.sql.Date sqlDate = java.sql.Date.valueOf(inventorySearchReq.getReportDate()); List<Inventory> list = inventoryService.findByDate(sqlDate); model.addAttribute("list", list); model.addAttribute("title", "在庫一覧"); return "inventory/index";
試したこと
調べてみたのですが、テーブル結合に関する情報ばかりで、
どのようにデータ挿入または参照しているのかがわかりませんでした。
補足情報(FW/ツールのバージョンなど)
java11, spring boot 2.7.0, MySQL, Mybatis
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/07/27 19:38