不推荐使用 Hibernate 5.2.5.Final createSQLQuery() 方法

Posted

技术标签:

【中文标题】不推荐使用 Hibernate 5.2.5.Final createSQLQuery() 方法【英文标题】:Hibernate 5.2.5.Final createSQLQuery() method deprecated 【发布时间】:2017-05-03 03:13:40 【问题描述】:

我在 Hibernate 中使用createSQL() 方法在我的数据库中进行插入操作。

我想要做的是声明一个自定义 SQL 语句,以便我可以将 MD5() 函数应用于表上的字段。这就是为什么我不能简单地使用save(Object) 方法。

我收到来自 Eclipse IDE 的警告,上面写着: The method createSQLQuery(String) from the type QueryProducer is deprecated.

尽管如此,插入操作仍按预期执行。

我在项目中使用的当前 Hibernate 版本是 5.2.5.Final。

所以,问题是:有没有其他方法可以在这个版本的 Hibernate 中实现同样的效果,以摆脱那个烦人的警告?

我也知道添加@SuppressWarnings("deprecation") 注释会解决问题,但我不确定它是否会在未来引起任何问题。

值得一提的是,我是一个使用这个框架的初学者。

【问题讨论】:

【参考方案1】:

已弃用的QueryProducer.createSQL(String) 的 javadoc 描述了改用什么:

已弃用。 (自 5.2 起)改用 createNativeQuery(String) 为给定的 SQL 查询字符串创建一个 NativeQuery 实例。

只添加@SuppressWarnings("deprecation") 通常不是一个好主意, 因为你将来可能会遇到问题;即当您移动到更新的 Hibernate 版本时,现在已弃用的方法将被删除。

【讨论】:

以上是关于不推荐使用 Hibernate 5.2.5.Final createSQLQuery() 方法的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Hibernate 5 正确创建 JPQL 查询(不推荐使用查询类型)

不推荐使用 Hibernate 5.2.5.Final createSQLQuery() 方法

为啥在 Hibernate 中不推荐“hibernate.connection.autocommit = true”?

为啥不推荐 HibernateDaoSupport?

JTAC 在 Spring Boot 中是不是推荐与 Hibernate 一起使用

BoneCP 和休眠