Задать вопрос
dolphin23
@dolphin23
Новичок в программировании

Не могу взять id с модели в java(srping), что делать?

Есть model Reader:
public class Reader {
    private int id;

    @NotEmpty(message = "Name shouldn't be empty!")
    @Size(min = 2, max = 100, message = "Name should be between 2 and 100 characters!")
    private String name;

    @Min(value = 0, message = "Age should be greater than 0!")
    private int age;

    public Reader(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public Reader(){}

   //getters and setters...
}

А так же dao ReaderDao:
@Component
public class ReaderDao {
    private final JdbcTemplate jdbcTemplate;

    @Autowired
    public ReaderDao(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }
    public Reader getReader(int id){
        return jdbcTemplate.queryForObject("SELECT * FROM reader WHERE reader_id=?",
                new BeanPropertyRowMapper<>(Reader.class), id);
    }

Я использую метод getReader в контроллере ReaderController:
@GetMapping("/{id}")
    public String readerPage(@PathVariable("id") int id,
                             Model model){
        model.addAttribute("reader", readerDao.getReader(id));
        Reader reader = (Reader) model.getAttribute("reader");
        System.out.println(reader.getId()); // всегда выводит 0
        return "readers/profile";
    }

И вот на строке с System.out.println всегда выводит 0, также есть метод где берутся все readers и там также у всех id равен 0, как с этим бороться?
  • Вопрос задан
  • 82 просмотра
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
xez
@xez Куратор тега Java
TL Junior Roo
В вашем селекте фигурирует поле reader_id, а в классе reader просто id.
Без вашей помощи JdbcTemplate не разберется, что это одно и то же.

p.s. конечно же надо переименовать поле в бд. В табличке reader долен быть id, а не reader_id. Такая конструкция (имятаблицы_id) применяется для внешних ключей обычно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы