繁体   English   中英

Spring3,休眠; 我如何使用HibernateTemplate

[英]Spring3, Hibernate; how do I use HibernateTemplate

我正在尝试更改以下代码以使用: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();
}
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)));

我的建议是压缩HibernateDaoSupport并从xml注入hibernateTemplatesessionFactory ,这样您就可以将受保护的方法添加到DAOImpl类中,这样您就可以像这样获得hibernateTemplategetHibernateTemplate()和可以像这样getSession().createCriteria();标准方法getSession().createCriteria();

HibernateTemplate不提供createCriteria()方法。 我想你需要这个:

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

也可以看看:

首先,让您的DAO类扩展HIbernateDAOSupport,以便您拥有getHibernateTemplate()方法。

然后使用:

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

当您在DAO类上调用setSessionFactory()时,将创建模板(将其添加为要注入的spring依赖项)。

然后,模板将调用提供的回调的doInHibernate(),传入会话(将从会话工厂中获取)。

您初始化了sessionFactory吗? 如果正确初始化了sessionFactory,那么使您的类与上面的方法保持一致,可以扩展具有getHibernateTemplate()方法的HibernateDAOSupport类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM