【问题标题】:How we can Query object in hibernateTemplate我们如何在 hibernateTemplate 中查询对象
【发布时间】:2012-02-13 08:18:31
【问题描述】:

我想在 HibernateTemplate 中使用 Query 对象。 我们可以将该 Query 对象与 HibernateTemplate 一起使用,但 Spring 已弃用该对象。

如果有人使用其他方式 请指导我

提前致谢

佛法

【问题讨论】:

  • 您能否分享一个指向您要使用的已弃用方法的 javadoc 的链接。我只发现 Spring 3.1 的 javadoc 中的 saveOrUpdateAll 被弃用了。

标签: hibernate spring


【解决方案1】:

您可以使用纯 sql,也可以通过编写简化查询来实现,例如:

Session session = sessionFactory.getCurrentSession();

Query query = session.createQuery("FROM TableName where id=:userId");
query.setString("userId", userId);  //userId is of string type Or you can use userId+"" to convert it to string

List<myEntityPOJOName> result = query.list();  //this will return a list of myEntityPOJOName objects

或者您可以在 createQuery() 函数中编写纯 sql,如下所示:

Session session = sessionFactory.getCurrentSession();
Query query = session.createQuery("delete from TableName myEntityPOJOName where id=:userId and hId=:hospitalID");
query.setString("userId",myUserID);
query.setString("hospitalID", myHospID);
int row = query.executeUpdate(); //returns a number of updated rows

对于 Hibernate 实现的函数,如 saveOrUpdate()、save() 等,您可以查看 Hibernate 文档http://www.hibernate.org/docs

【讨论】:

  • 谢谢我们可以这样做,但我想在 HibernateTemplate 中做任何替代,我们正在使用 Spring 和休眠
  • HibernateTemplate 只做连接、会话等相关的东西,但不管你是使用 hibernateTemplate 还是 SessionFactory 来处理你的 Session,查询都将保持不变。因此,对于您的项目,如果您使用了 hibernateTemplate,那么它将为您创建会话,您只需要获取当前会话(或创建一个新会话)来执行任何与数据库相关的操作。还有一件事,正如我所知道的使用 hibernateTemplate在最后一个版本的hibernate中不是首选,而是您可以直接将 sessionFactory 注入您的 DAO 类
  • (继续之前的评论)...不扩展 HibernateDaoSupport。这是 Hibernate 参考文档的链接,其中内容相同:“注意:从 Hibernate 3.0.1 开始,事务性 Hibernate 访问代码也可以以普通 Hibernate 样式编码。因此,对于新开始的项目,请考虑采用标准的 Hibernate3 样式而是基于 SessionFactory.getCurrentSession() 编码数据访问对象。” static.springsource.org/spring/docs/2.5.x/api/org/…
猜你喜欢
  • 2021-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-16
  • 1970-01-01
  • 1970-01-01
  • 2012-01-01
相关资源
最近更新 更多