Spring3, Hibernate;как мне использовать HibernateTemplate - PullRequest
7 голосов
/ 01 апреля 2011

Я пытаюсь изменить следующий код для использования: HibernateTemplate, но не могу работать

public List<Friend> listFriends(String rUser) 
{
    hibernateTemplate = new HibernateTemplate(sessionFactory);

    Friend friend = new Friend();
        friend.setUsername(rUser);

    // This is the old code that worked!
            return (List<Friend>) sessionFactory.getCurrentSession()
            .createCriteria(Friend.class)
            .add(Example.create(friend))
            .list();

        // This IS THE NEW CODE THAT I CANT GET TO BUILD?
            return (List<Friend>) hibernateTemplate.createCriteria(Friend.class)
            .add(Example.create(friend))
            .list();
}

Ответы [ 5 ]

17 голосов
/ 01 апреля 2011
Friend friend = new Friend();
    friend.setUsername(rUser);

return (List<Friend>) hibernateTemplate.findByCriteria(
        DetachedCriteria.forClass(Friend.class)
        .add(Example.create(friend)));

или

Friend friend = new Friend();
    friend.setUsername(rUser);

return (List<Friend>) hibernateTemplate.findByExample(friend);

или

return (List<Friend>) hibernateTemplate.findByCriteria(
        DetachedCriteria.forClass(Friend.class)
        .add(Restrictions.eq("username", rUser)));
1 голос
/ 26 декабря 2014

Мой совет: exdens HibernateDaoSupport и введите hibernateTemplate или sessionFactory из xml, чтобы вы получили защищенные методы для вашего класса DAOImpl, чтобы вы могли получить hibernateTemplate, как этот getHibernateTemplate(), и метод критериев, который вы можете вызвать как это getSession().createCriteria();

1 голос
/ 01 апреля 2011

HibernateTemplate не обеспечивает createCriteria() метод. Я думаю, вам нужно это:

return (List<Friend>) hibernateTemplate.findByExample(friend);

Смотри также:

1 голос
/ 01 апреля 2011

Прежде всего, ваш класс DAO расширяет HIbernateDAOSupport, чтобы у вас был метод getHibernateTemplate ().

Затем используйте:

getHibernateTemplate().executeFind(new HibernateCallback() {
    Object doInHibernate(Session session) {
        return session.createCriteria(Friend.class)
        .add(Example.create(friend))
        .list();
    }
});

Шаблон создается при вызове setSessionFactory ()в вашем классе DAO (добавьте его как пружинную зависимость для внедрения).

Затем шаблон вызовет doInHibernate () предоставленного обратного вызова, передавая сеанс (который он получит из фабрики сеансов)

0 голосов
/ 01 апреля 2011

вы инициализировали sessionFactory? Если вы правильно инициализируете sessionFactory, то сделайте так, чтобы ваш класс, который содержит вышеуказанный метод, расширил класс HibernateDAOSupport, в котором есть метод getHibernateTemplate ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...