Распечатать результат запроса в jsp-таблицу Java Spring MVC jsp

Мне нужно распечатать на столе человека старше 55 лет, но он печатает каждого человека из БД. Я не знаю, что не так.

Дао

@Override
    @SuppressWarnings("unchecked")
    public List<Book> old1() {
        Session session = this.sessionFactory.getCurrentSession();
//        List<Book> bookListt = session.createQuery("SELECT BOOK_TITLE, BOOK_AUTHOR, birthday FROM bookmanager.books WHERE birthday <= DATE_SUB(CURDATE(), INTERVAL 15 year)").list();
        List<Book> bookList1 = session.createSQLQuery("SELECT ID, BOOK_TITLE, BOOK_AUTHOR, born FROM bookmanager.book  WHERE born <= DATE_SUB(CURDATE(), INTERVAL 10 year))").list();

        return bookList1;
    }

Контроллер:

@RequestMapping(value = "books", method = RequestMethod.GET)
    public String old(Model model){
        model.addAttribute("book", new Book());
        model.addAttribute("old", this.bookService.listBooks());

        return "books";
    }

и я пытаюсь напечатать этого человека, но это неправильно. Печатает все песни из БД

Как я могу это исправить?

<c:if test = "${!empty old1}">
    <table class = "tg">
        <tr>
            <th width = "80">ID</th>
            <th width = "120">Title</th>
            <th width = "120">Author</th>
            <th width = "120">Price</th>
            <th width = "120">born</th>
            <th width = "60">Edit</th>
            <th width = "60">Delete</th>
        </tr>
        <c:forEach items = "${old1}" var = "book1">
            <tr>
                <td>${book1.id}</td>
                <td><a href = "/bookdata/${book1.id}" target = "_blank">${book.bookTitle}</a></td>
                <td>${book1.bookAuthor}</td>
                <td>${book1.price}</td>
                <td>${book1.born}</td>
                <td><a href = "<c:url value='/edit/${book1.id}'/>">Edit</a></td>
                <td><a href = "<c:url value='/remove/${book1.id}'/>">Delete</a></td>
            </tr>
        </c:forEach>
    </table>
</c:if>
[DATE_ADD(CURDATE()] <- почему здесь квадратные скобки? Это не синтаксис MySQL AFAIK.
Tim Biegeleisen 29.09.2018 16:08

@TimBiegeleisen ИДЕЯ выделите эту часть красным цветом.

user10332456 29.09.2018 16:09

@TimBiegeleisen и без квадратных скобок эффект все тот же. Еще вариант?

user10332456 29.09.2018 16:12

Пожалуйста, добавьте образец данных к вашему вопросу, а затем добавьте текущий результат запроса.

Tim Biegeleisen 29.09.2018 16:18

Запрос @TimBiegeleisen работает правильно

user10332456 29.09.2018 16:30

@TimBiegeleisen проверьте мой jsp. Мб там не так.

user10332456 29.09.2018 16:37
${book.price/100}${book.price%100} <- что это должно делать?
Tim Biegeleisen 29.09.2018 16:39

@TimBiegeleisen для печати цена в двойном размере. В цене модели внутр. Это важно? Проблема в другом.

user10332456 29.09.2018 16:43

Я не понимаю этой формулы. Что не так с выводом JSP, и является ли вывод о цене частью проблемы?

Tim Biegeleisen 29.09.2018 16:44

@TimBiegeleisen забудьте про "цену". Напечатаем без цены. Проблема в том, что когда я выбираю человека из БД, они печатают все без запроса.

user10332456 29.09.2018 16:50

Опять же, отредактируйте свой вопрос и покажите, в чем проблема. Трудно следить за тобой.

Tim Biegeleisen 29.09.2018 16:51

@TimBiegeleisen Мне нужно выбрать из БД человека старше X лет и распечатать его в таблице.

user10332456 29.09.2018 16:53

Хорошо, мы просто обошли большой круг, так что я закончил.

Tim Biegeleisen 29.09.2018 16:54

@TimBiegeleisen печатает всех, но не выбранных. Вы можете мне помочь?

user10332456 29.09.2018 16:56
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
14
172
2

Ответы 2

Я не уверен, что ваш код Hibernate / Java полностью верен, но ваш запрос MySQL выглядит не так. Если вы хотите настроить таргетинг на все книги, чье поле born старше 55 лет с текущей даты, используйте следующее:

SELECT id, bookTitle, bookAuthor, birthday
FROM Book
WHERE born <= DATE_SUB(CURDATE(), INTERVAL 55 year)
ORDER BY born;

Измените запрос на критерии. Собственный запрос sql не работал.

public List<Book> listBooks() {
        Session session = this.sessionFactory.getCurrentSession();


        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR) - 55);

        List<Book> bookList = session.createCriteria(Book.class).add(Restrictions.le("born", calendar.getTime())).list();


        return bookList;
    }

Другие вопросы по теме