前提・実現したいこと
Java(Spring)とMysqlを用いてデータを表示しようとしています。
複合主キーを使用したテーブルで、一覧が正しく表示されない不具合が発生しました。
どのように改善すれば正しいデータが表示されますでしょうか。
こちらのCREATE文を実行し、
CREATE TABLE Day_diary ( `id` int(10) AUTO_INCREMENT, `day_id` int(2), `data` char(40), PRIMARY KEY (`id`, `day_id`));
下記のデータを挿入しています。
id | day_id | data |
---|---|---|
1 | 7 | 外食に行った |
1 | 15 | 友達と遊んだ |
発生している問題
2件登録している情報のうち1件目が2回表示され、 もう一つのデータが表示されない。
該当のソースコード
Day_diaryController.java
package com.example.demo.Controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import com.example.demo.Repository.Day_diaryRepository; import lombok.RequiredArgsConstructor; @RequiredArgsConstructor @Controller public class Day_diaryController { private final Day_diaryRepository repository; @GetMapping("/day") public String showList(Model model) { model.addAttribute("data",repository.findAll()); return "day"; } }
Day_diary.java
package com.example.demo.model; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @Getter @Setter @Entity @AllArgsConstructor @NoArgsConstructor @Table(name = "day_diary") public class Day_diary implements Serializable{ /** * */ private static final long serialVersionUID = -2353850539404519008L; //a ID @Id @Column(name = "id") private int id; //a 日ID @Column(name = "day_id") private int day_id; //a 内容 @Column(name = "data") private String data; }
Day_diaryRepository.java
package com.example.demo.Repository; import org.springframework.data.jpa.repository.JpaRepository; import com.example.demo.model.Day_diary; public interface Day_diaryRepository extends JpaRepository<Day_diary,Integer> { }
day.html
<!DOCTYPE html> <html lang="ja" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/web/thymeleaf/layout"> <head> <meta charset="utf-8"> <title>日記管理</title> <link th:href="@{/css/sb-admin-2.css}" rel="stylesheet" /> </head> <body> <!-- DataTables --> <div class="card shadow my-4"> <div class="card-header py-3"> <h6 class="m-0 font-weight-bold text-primary">日記一覧(日別)</h6> </div> <div class="card-body"> <div class="table-responsive"> <table class="table table-bordered"> <thead> <tr> <th>日</th> <th>内容</th> </tr> </thead> <tbody> <tr th:each="data: ${data}" th:object="${data}"> <td th:text="*{day_id}"></td> <td th:text="*{data}"></td> </tr> </tbody> </table> </div> </div> </div> </body> </html>
試したこと
一覧表示を行うとこのような内容が表示されてしまいます。
id | day_id | data |
---|---|---|
1 | 7 | 外食に行った |
1 | 7 | 外食に行った |
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。