Мне нужно распечатать на столе человека старше 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>
@TimBiegeleisen ИДЕЯ выделите эту часть красным цветом.
@TimBiegeleisen и без квадратных скобок эффект все тот же. Еще вариант?
Пожалуйста, добавьте образец данных к вашему вопросу, а затем добавьте текущий результат запроса.
Запрос @TimBiegeleisen работает правильно
@TimBiegeleisen проверьте мой jsp. Мб там не так.
${book.price/100}${book.price%100} <- что это должно делать?
@TimBiegeleisen для печати цена в двойном размере. В цене модели внутр. Это важно? Проблема в другом.
Я не понимаю этой формулы. Что не так с выводом JSP, и является ли вывод о цене частью проблемы?
@TimBiegeleisen забудьте про "цену". Напечатаем без цены. Проблема в том, что когда я выбираю человека из БД, они печатают все без запроса.
Опять же, отредактируйте свой вопрос и покажите, в чем проблема. Трудно следить за тобой.
@TimBiegeleisen Мне нужно выбрать из БД человека старше X лет и распечатать его в таблице.
Хорошо, мы просто обошли большой круг, так что я закончил.
@TimBiegeleisen печатает всех, но не выбранных. Вы можете мне помочь?




Я не уверен, что ваш код 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;
}
[DATE_ADD(CURDATE()]<- почему здесь квадратные скобки? Это не синтаксис MySQL AFAIK.