我正在使用Spring Framework。如何将对象变量值传递给Hibernate条件限制?
这就是我写它们的方式:
@Repository
public class EventSearchDAOImpl implements EventSearchDAO<Event> {
@Autowired
private SessionFactory sessionFactory;
private Session session;
private Transaction trans;
@Override
public List<Event> getAll(Event event) {
session = sessionFactory.openSession();
System.out.println(event.getType()+event.getName());
return session.createCriteria(Event.class).add(Restrictions
.and(Restrictions.like("type", "%"+event.getType()+"%"),
Restrictions.like("name", "%"+event.getName()+"%")))
.list();
}
}
我在输出控制台中打印了值以通过System.out.println(event.getType()+event.getName());
进行检查,它们似乎确实成功通过了。
这就是我通过我的DefaultController.java
课传递它们的方式:
@RequestMapping(value = "/searchEvent", method = RequestMethod.POST)
public String searchEvent(Event event, Model model) {
Event e = new Event();
e.setType(event.getType());
e.setName(event.getName());
model.addAttribute("check", eventSearchDAO.getAll(e));
return "redirect:/";
}
我的index.jsp
页面中的表单会将数据发布到上面的代码行中。
要检查代码是否有效,我在index.jsp
中添加了以下内容:
<c:forEach var="i" items="${check}">
${i.name} || ${i.type} <br>
</c:forEach>
如果我手动将限制写为
return session.createCriteria(Event.class).add(Restrictions
.and(Restrictions.like("type", "%fair%"),
Restrictions.like("name", "%auto%")))
.list();
并相应地在控制器中进行一些调整,它工作得很好。但是当我通过传递对象的变量来做它时,它似乎不起作用。那是我的问题。请帮我解决这个问题。
答案 0 :(得分:0)
原来我的Controller类DefaultController.java
出现了错误,我应该写道:
return "index";
而不是:
return "redirect:/";
是的,我是个白痴。