java - 得到错误 org.hibernate.HibernateException:命名查询中的错误:customers.amountDeposit,customers.amountWithdraw
问题描述
我在命名查询中遇到问题得到错误org.hibernate.HibernateException
:命名查询中的错误:customers.amountDeposit
,customers.amountWithdraw
这是我的存款和取款的命名查询以及数量存款和取款的DAO实现,第一次尝试,我可以说我是初学者
@NamedQueries ({
@NamedQuery(name="customers.amountWithdraw", query="update customers set customerBalance = customerBalance - :amount where :customerAccNo"),
@NamedQuery(name="customers.amountDeposit", query="update customers set customerBalance = customerBalance + :amount where :customerAccNo" )})
这是我的 DAO 实现
public Customer amountWithdraw(Customer customer,double amount) {
customer=(Customer) session.get(Customer.class, customer.getCustomerAccNo());
if(customer!=null) {
Query query = session.getNamedQuery("customers.amountWithdraw");
query.setParameter("customerBalance",customer.getCustomerBalance());
query.setParameter("amount", amount );
query.setParameter("customerAccNo",customer.getCustomerAccNo());
query.executeUpdate();
customer=getCustomerByAccNo(customer.getCustomerAccNo());
return customer;
}
return null;
}
public Customer amountDeposit(Customer customer, double amount) {
customer=(Customer) session.get(Customer.class, customer.getCustomerAccNo());
if(customer!=null) {
Query query = session.getNamedQuery("customers.amountDeposit");
query.setParameter("customerBalance",customer.getCustomerBalance());
query.setParameter("amount", amount );
query.setParameter("customerAccNo",customer.getCustomerAccNo());
query.executeUpdate();
customer=getCustomerByAccNo(customer.getCustomerAccNo());
return customer;
}
return null;
}
解决方案
显然where :customerAccNo
不是一个有效的谓词。您必须使用运算符(例如等于运算符)将该参数与某个列/字段进行比较,以=
使其成为正确的谓词。用这个:
@NamedQueries ({
@NamedQuery(name="customers.amountWithdraw", query="update customers set customerBalance = customerBalance - :amount where customerAccNo = :customerAccNo"),
@NamedQuery(name="customers.amountDeposit", query="update customers set customerBalance = customerBalance + :amount where customerAccNo = :customerAccNo" )})
推荐阅读
- docker - Docker(docker-compose.yml 文件)定义网络
- php - 如何使用 codeigniter 在邮件中设置动态标题?
- hyperledger-fabric - Hyperledger Fabric 中的对等通道创建失败
- react-native - 监视 this.state 以外的对象/字符串
- c++ - 具有多个可执行文件和依赖项的 Makefile
- javascript - D3 Persistent Path d 过渡期间的预期数字错误
- python - Python 机械化设置 cookie
- arrays - 为什么我的圈子显示为黑色?
- cordova - Cordova 找不到变量:NativeStorage
- php - 将货币选择器添加到 laravel