У меня есть способ получить категорию по ее «id», и мне нужен аналогичный метод, чтобы получить категорию по ее «имени». Я использовал эти методы, используя Hibernate. Как я могу исправить свой второй метод, чтобы получить категорию по имени? Мой исходный код выглядит следующим образом:Hibernate SQLQuery - получить объект по имени
// It works
@Override
public Category getById(int id) {
return (Category) sessionFactory.getCurrentSession().get(Category.class, id);
}
// It doesn't works
@Override
public Category getByName(String name) {
return (Category) sessionFactory.getCurrentSession().
createSQLQuery("SELECT FROM Category WHERE name="+name);
}
У меня есть эта ошибка со вторым способом:
java.lang.ClassCastException: org.hibernate.impl.SQLQueryImpl не может ввергнуть к ком. sedae.model.Category
Это мои контроллеры.
@RequestMapping(value = "/getCategoryById/{id}")
public String getCategoryById(Model model, @PathVariable ("id") int id){
model.addAttribute("category", categoryService.getById(id));
return "/getCategoryById";
}
@RequestMapping(value = "/getCategoryByName/{name}")
public String getCategoryByName(Model model, @PathVariable("name") String name){
model.addAttribute("category", categoryService.getByName(name));
return "/getCategoryByName";
}
Спасибо заранее.
Спасибо, чувак! Еще один вопрос. Предположим, у меня есть две категории (с разными идентификаторами, очевидно). Как я могу получить определенную категорию, избегая ошибки «запрос не возвратил уникальный результат: 2». ? – wilson
В этом случае запрос возвращает список, вы можете перебирать список и получать желаемый объект, или если вы хотите, чтобы какой-либо из объектов имел одинаковое имя категории, вы можете использовать 'query.setMaxResults (1);', this возвращает первую найденную категорию с указанным именем категории. – user3487063
@wilson, было ли решение для вас? – user3487063