gpt4 book ai didi

java - 由于撇号,Hibernate 中的 QueryException

转载 作者:行者123 更新时间:2023-12-01 00:47:43 26 4
gpt4 key购买 nike

这是我的查询

SQL_QUERY="SELECT review.comment FROM ReviewDO review WHERE title='"+titleName+"'";

我试图通过使用标题来获取它的描述。

对于示例,如果tileName="Worth for money";(没有撇号)查询将是:

SQL_QUERY="SELECT review.comment FROM ReviewDO review WHERE title='Worth for money';

正在获取输出。

但是如果 titleName="Can't beat the product";(带撇号)

SQL_QUERY="SELECT review.comment FROM ReviewDO review WHERE title='Can't beat the product';

正在获取 org.hibernate.QueryException:expecting ''',found 'EOF'

有什么办法可以避免这个问题吗?

最佳答案

使用占位符。它还有助于防止 SQL 注入(inject):

 Session ses = HibernateUtil.getSessionFactory().openSession();
String query = "SELECT review.comment FROM ReviewDO review WHERE title=:title";
List<ReviewComment> reviewComments = ses.createQuery(query)
.setParameter("title", "Can't beat the product")
.list();
ses.close();

如果您确定您的查询只会给出一条记录,那么请使用 Query 接口(interface)的 uniqueResult() 方法而不是使用 list() 方法。

有关更多详细信息,请参阅查询接口(interface)的文档here

关于java - 由于撇号,Hibernate 中的 QueryException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19651322/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com