実現したいこと
ここに実現したいことを箇条書きで書いてください。
- PlayersRequestクラスやPlayersDtoクラスが持つcountry_idの表示をCountriesDtoが持つidに接続してnameに変換したい(ID表示部分を国名に変えたい)
前提
ここに質問の内容を詳しく書いてください。
Thymreafで情報サイトを作っています。
試しに変換機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
コンストラクター PlayersUpdateRequest(long, String, String, String, String, String, String, String, String) は未定義です
該当のソースコード
package com.example.test1.repository; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; import com.example.test1.PlayersDto; import com.example.test1.PlayersRequest; import com.example.test1.PlayersUpdateRequest; import lombok.RequiredArgsConstructor; @Repository @RequiredArgsConstructor public class PlayersRepository { private final JdbcTemplate jdbcTemplate; public List<PlayersDto> getAll() { String sql = "select id,country_id,uniform_num,position,name,club,birth,height,weight,create_date,update_date,delete_date from players where delete_date is null"; List<Map<String, Object>> playersList = jdbcTemplate.queryForList(sql); List<PlayersDto> list = new ArrayList<>(); // LocalDatetime to Date for (Map<String, Object> players : playersList) { list.add(new PlayersDto( (long) players.get("id"), (String) players.get("country_id"), (String) players.get("uniform_num"), (String) players.get("position"), (String) players.get("name"), (String) players.get("club"), (Date) players.get("birth"), (String) players.get("height"), (String) players.get("weight"), Date.from(ZonedDateTime.of((LocalDateTime ) players.get("create_date"), ZoneId.systemDefault()).toInstant()), Date.from(ZonedDateTime.of((LocalDateTime ) players.get("update_date"), ZoneId.systemDefault()).toInstant()), players.get("delete_date") != null ? Date.from(ZonedDateTime.of((LocalDateTime ) players.get("delete_date"), ZoneId.systemDefault()).toInstant()) : null )); } return list; } public PlayersDto findById(long id) { String sql = "select id,country_id,uniform_num,position,name,club,birth,height,weight,create_date,update_date,delete_date from players where id = ?"; Map<String, Object> players = jdbcTemplate.queryForMap(sql, id); return new PlayersDto( (long) players.get("id"), (String) players.get("country_id"), (String) players.get("uniform_num"), (String) players.get("position"), (String) players.get("name"), (String) players.get("club"), (Date) players.get("birth"), (String) players.get("height"), (String) players.get("weight"), Date.from(ZonedDateTime.of((LocalDateTime ) players.get("create_date"), ZoneId.systemDefault()).toInstant()), Date.from(ZonedDateTime.of((LocalDateTime ) players.get("update_date"), ZoneId.systemDefault()).toInstant()), players.get("delete_date") != null ? Date.from(ZonedDateTime.of((LocalDateTime ) players.get("delete_date"), ZoneId.systemDefault()).toInstant()) : null ); } static public final String DATE_PATTERN ="yyyy-MM-dd"; public PlayersUpdateRequest updateById(long id) { String sql = "select id,country_id,uniform_num,position,name,club,birth,height,weight,create_date,update_date,delete_date from players where id = ?"; Map<String, Object> players = jdbcTemplate.queryForMap(sql, id); SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_PATTERN); return new PlayersUpdateRequest( (long) players.get("id"), (String) players.get("country_id"), (String) players.get("uniform_num"), (String) players.get("position"), (String) players.get("name"), (String) players.get("club"), dateFormat.format((Date)players.get("birth")), (String) players.get("height"), (String) players.get("weight") ); } //新規登録 public void createPlayers(PlayersRequest ins) { jdbcTemplate.update( "INSERT INTO players" + "(country_id" + ",uniform_num" +",position" +",name" +",club" +",birth" +",height" +",weight" +",update_date" +",create_date)" +"values" +"(?,?,?,?,?,?,?,?,?,?)", ins.getCountry_id() ,ins.getUniform_num() ,ins.getPosition() ,ins.getName() ,ins.getClub() ,ins.getBirth() ,ins.getHeight() ,ins.getWeight() ,new Date() ,new Date()); } //更新(編集) public void updatePlayers(PlayersUpdateRequest usr) { jdbcTemplate.update( "update players " + "set country_id = ?" + ",uniform_num = ?" + ",position = ?" + ",name = ?" + ",club = ?" + ",birth = ?" + ",height = ?" + ",weight = ?" +",update_date = ?" + " where id = ?;", usr.getCountry_id() ,usr.getUniform_num() ,usr.getPosition() ,usr.getName() ,usr.getClub() ,usr.getBirth() ,usr.getHeight() ,usr.getWeight() ,new Date() ,usr.getId()); } //削除 public void deletePlayers(long id) { jdbcTemplate.update( "update players set delete_date = ? where id = ?;", new Date() ,id); } }
試したこと
最後の文を追加しました。
package
1 2import java.io.Serializable; 3 4import javax.validation.constraints.NotEmpty; 5import javax.validation.constraints.Pattern; 6import javax.validation.constraints.Size; 7 8import lombok.Data; 9/** 10 * 国情報 リクエストデータ 11 */ 12@Data 13public class PlayersRequest implements Serializable { 14 private long id; 15 private Countries country; 16 17 /*国id*/ 18 @Size(max = 3, message = "国IDは3桁以内で入力してください") 19 private String country_id; 20 21 /*ユニフォーム*/ 22 @Size(max = 3, message = "ユニフォーム番号は大文字かつ半角数字3文字以内で入力してください") 23 private String uniform_num; 24 25 /*ポジション*/ 26 @Size(max =2, message = "ポジションは大文字かつ2文字以内で入力してください") 27 @Pattern(regexp = "^[A-Z ]*$", message = "ポジションは大文字かつ2文字以内で入力してください") 28 private String position; 29 30 /*名前*/ 31 @Size(max = 50, message = "名前は50字以内で入力してください") 32 private String name; 33 34 /*所属クラブ*/ 35 @Size(max = 50, message = "所属クラブは50字以内で入力してください") 36 private String club ; 37 38 /*誕生日*/ 39 @NotEmpty(message = "誕生日を入力してください") 40 @Pattern 41 (regexp = "\\d{4}-\\d{2}-\\d{2}", message = "誕生日は西暦-月-日で入力してください") 42 private String birth; 43 44 /*身長*/ 45 @Size(max = 3, message = "身長は整数3桁以内で入力してください") 46 private String height; 47 48 /*体重*/ 49 @Size(max = 3, message = "体重は整数3桁以内で入力してください") 50 private String weight; 51 52 53 ///以下を追加した///(最初の private Countries country;も) 54 /*country_idをCountriesのnameに変換するメソッド*/ 55 public void convertCountryIdToName(Countries country) { 56 this.country = country; 57 this.country_id = country.getName(); 58 } 59}
補足情報(FW/ツールのバージョンなど)
eclipse2021 Thymleaf

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/04/23 05:02
2023/04/23 05:04
2023/04/23 05:40
2023/04/23 07:56