如何为Hibernate标准传递对象变量?

时间:2018-03-25 06:41:57

标签: java orm hibernate-criteria

我正在使用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();

并相应地在控制器中进行一些调整,它工作得很好。但是当我通过传递对象的变量来做它时,它似乎不起作用。那是我的问题。请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

原来我的Controller类DefaultController.java出现了错误,我应该写道:

return "index";

而不是:

return "redirect:/";

是的,我是个白痴。