gpt4 book ai didi

java - hibernate 无法检测命名参数

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

我正在尝试执行 hibernate 查询。创建查询后,“query.getQueryString()”打印如下:

select a 
from com.mycompany.model.dwh.Instruction a
where a.custBillAcctId = :accountId

然后当我尝试设置参数时:

query.setParameter("accountId", new BigDecimal(accountId));

我得到:

org.hibernate.QueryParameterException: 
could not locate named parameter [accountId]

我打印“query.getNamedParameters()”,它看起来是空的。 Hibernate 有点无法检测到:accountId。我尝试了不同的东西,通过参数索引设置等。都失败了。我在 JEE-Hibernate 中做了数百万次,但我在 Spring-Hibernate 中失败了。

环境:Eclipse-Jetty hibernate :4.1.9.Final Spring 框架:3.2.1.RELEASE


@Entity
@Table(name = "TALIMAT")
public class Instruction implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@Column(name = "TALIMAT_ID")
@GenericGenerator(name="kaugen" , strategy="increment")
@GeneratedValue(generator="kaugen")
private Long key;

@Id
@Column(name = "CUST_BILL_ACCT_ID")
private BigDecimal custBillAcctId;

....

@Column(name = "STATUS")
private String status;

@Temporal(TemporalType.DATE)
@Column(name = "INSERT_DATE")
private Date insertDate;

这是我的代码:

    try {
Session session = sessionFactory.getCurrentSession();

Query query = session.createQuery("select a from " +
Instruction.class.getName() + " a
where a.custBillAcctId = :accountId ");


System.out.println("getNamedParameters: ");
for(String g:query.getNamedParameters()){
System.out.println(g + "\n");
}

query.setParameter("accountId", new BigDecimal(accountId));

} catch (Exception e1) {
e1.printStackTrace();
}

谢谢

最佳答案

我刚刚解决了这个问题。这是一个愚蠢的副作用问题。我有多个 databaseContext.xml 文件,每个文件都包含应用程序使用的不同数据库的数据源定义。尽管它们位于单独的文件中,但数据源 ID 是一致的,这导致了模棱两可的行为。

当我给他们唯一的名字时,问题就消失了

关于java - hibernate 无法检测命名参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22101116/

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