【问题标题】:Got error org.hibernate.HibernateException: Errors in named queries: customers.amountDeposit, customers.amountWithdraw得到错误 org.hibernate.HibernateException:命名查询中的错误:customers.amountDeposit,customers.amountWithdraw
【发布时间】:2021-10-18 03:53:35
【问题描述】:

我在命名查询中遇到问题得到错误org.hibernate.HibernateException:命名查询中的错误:customers.amountDepositcustomers.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;        
        }

【问题讨论】:

    标签: java hibernate dao named-query


    【解决方案1】:

    显然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" )})  
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-14
      • 2014-07-02
      • 2013-05-07
      • 2015-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多