Задать вопрос
@i_yan

Thymeleaf отобразает одну и ту же запись таблицы бд. Как исправить?

У меня в БД имеется 5 записей сущности tоurs. По аналогии я создал класс

@Entity
@Table(name="tours")
public class Tour {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    @Column(name = "title")
    private String title;
    @Column(name = "description")
    private String description;
    @Column(name = "startTime",length=20)
    private String startTime;
    @Column(name = "endTime",length=20)
    private String endTime;
    @Column(name = "price")
    private double price;

//геттеры и сеттеры

}

Я хотел вывести их на странице html с Thymeleaf. Создал контроллер:

@Controller
    public class MainController {
        @Autowired
        private TourRepository tourRepository;
    
        @GetMapping("/")
        public String mainPage(Model model) {    
           
        List<Tour> tourList=tourRepository.findAll();    
        model.addAttribute("tours",tourList);
    
        return "home/main";
        }    

        @RequestMapping("/main")
        public String main() {
   
        return "redirect:/";}
}

И Репозиторий:
public interface TourRepository extends JpaRepository<Tour,Integer> {  
}

application.properties:

# hibernate configurations
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update

# thumeleaf configurations
spring.thymeleaf.mode= HTML
spring.thymeleaf.cache=false
Пытался передать значение полей через цикл в виде таблице
<table>
    <thead>
        <tr>
            <th>Title</th>
            <th>Price</th>
        </tr>
    </thead>
    <tbody>
        <tr th:each ="tour : ${tours}">
            <td th:utext="${tour.title}">...</td>
            <td th:utext="${tour.price}">...</td>
        </tr>
    </tbody>
</table>

Однако почему-то выводит 5 дубликатов первой записи в БД.
CqG6H.png
В самой IDE переменные подчеркиваются красным
oQUeg.png
Может кто объяснить почему так происходит и как это исправить?
  • Вопрос задан
  • 102 просмотра
Подписаться 2 Средний Комментировать
Решения вопроса 1
@i_yan Автор вопроса
Проверил БД. Очистил таблицу, внова внес данные. В таблице из-за того, что столбец с code не считался явно айдишником, Спринг создал свою переменную. Из-за этого скорее всего и выводило только первую запись с БД. Теперь явно в коде указал на этот столбец

@Id
 @GeneratedValue(strategy = GenerationType.IDENTITY)
 @Column(name = "code")
    private int id;

Теперь всё корректно отображается
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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