gpt4 book ai didi

hibernate - 如何在Hibernate中使用setParameterList()方法?

转载 作者:行者123 更新时间:2023-12-04 03:07:42 30 4
gpt4 key购买 nike

我需要根据作为数组提供的ids从Oracle数据库中获取选定的行,类似于SELECT ... FROM table_name WHERE id IN()查询。

在尝试这样做时,我尝试如下在DAO中使用 org.hibernate.setParameterList(String name, Object[] values) 方法。

@Service
@Transactional(readOnly = true, propagation=Propagation.REQUIRES_NEW)
public final class ProductImageDAO implements ProductImageService {

@SuppressWarnings("unchecked")
public List<Object[]> getFileName(String[] list) {
return sessionFactory
.getCurrentSession()
.createQuery("SELECT prodImageId, prodImage FROM ProductImage WHERE prodImageId=:list")
.setParameterList("list", list).list();
}
}

给定方法中的 String[]类型的参数由相应的Spring Controller 类提供。

它导致引发以下异常。

org.hibernate.hql.ast.QuerySyntaxException: unexpected token: , near line 1, column 78 [select prodImageId, prodImage from model.ProductImage where prodImageId=:id0_, :id1_, :id2_, :id3_, :id4_, :id5_]



使用Hibernate根据 ids列表检索所选行的方法是什么?

最佳答案

String queryString = "select acc from cgix.trust.domain.PtbnAccount as acc where acc.accountId IN (:accountdIds)";
Query query = session.createQuery (queryString);
query.setParameterList("accountIds", accountFilter);

假设 accountFilterList对象。请记住,您不应该传递空列表,因为这将导致以下SQL(将不起作用): ... WHERE xyz IN () ...(请注意空的子句)。

关于hibernate - 如何在Hibernate中使用setParameterList()方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14296234/

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