gpt4 book ai didi

java - 编写 hibernate 查询时遇到问题

转载 作者:行者123 更新时间:2023-11-30 01:39:06 25 4
gpt4 key购买 nike

嗨,在 hibernate 方面我是个新手,所以我将尝试尽可能清楚地提出我的问题。我想执行以下查询作为 hibernate 查询。

 <sql-query name="updateINFO">
update
info
set
status_id = 2
where
pid = :i
</sql-query>

现在 i 是一个动态值,所以有时我会传递 1 有时 1000,实际上我会遍历列表并对列表中的每个项目进行查询,你明白我的意思了。现在这是我的 java 调用执行此查询的部分..

 for(int i=0; i<list.size(); i++)
{
Query query = session.getNamedQuery("updateINFO").setParameter("pid", list.get(i));
}

这种方法有什么问题吗?谢谢

我已经创建了 Long 类型的列表,并且我从另一个查询中获取了列表项

List<Long> list = null;
Query query = session.getNamedQuery("endDateChecker");
list = query.list();

这是我的方法:

public List<Long> I need findItemByPIdEndDate() throws Exception {

List<Long> list = null;

try{
Session session = sessionFactory.getCurrentSession();

Query query = session.getNamedQuery("endDateChecker");
list = query.list();

for (Long listItem : list) {
Query query1 = session.getNamedQuery("updateINFO")
.setParameter("in",listItem);
}



}catch (HibernateException e){
throw new DataAccessException(e.getMessage());
}

return list;
}

最佳答案

您可以使用setParameterList:



<sql-query name="updateINFO">


update info set status_id = 2 where pid in (:parameters)

</sql-query>


public List findItemByPIdEndDate() 抛出异常 {



List
    
      list = null;
     

尝试{
session session = sessionFactory.getCurrentSession();

查询 query = session.getNamedQuery("endDateChecker");
列表=查询.列表();


查询 query1 = session.getNamedQuery("updateINFO")
.setParameterList("参数",列表);

查询1.executeUpdate();



}catch (HibernateException e){
抛出新的 DataAccessException(e.getMessage());
}
返回列表;
}

关于java - 编写 hibernate 查询时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1630057/

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