如何访问JPQL查询返回值(List)

时间:2017-08-31 09:35:07

标签: jpa

这是我的方法

    public void makeDeposit(String WristID, double deposit) {

        List resultList = em.createQuery(
                "SELECT c FROM Tbleaccountcb005916 c WHERE c.wristid LIKE :wId")
                .setParameter("wId", WristID)
                .setMaxResults(1)
                .getResultList();

        int aNo = (int) resultList.get(0);

        Tbleaccountcb005916 makeDeposit = em.find(Tbleaccountcb005916.class, aNo);
        double balance = makeDeposit.getBalance();
        double Mdeposit = balance + deposit;

        makeDeposit.setBalance(Mdeposit);
        em.persist(makeDeposit);
    }

我想访问resultList值。此图像显示resultList值(已调试)

enter image description here

我需要访问resultList值(accountno = value = 2)并使用它。

我尝试了这个,但它不起作用:

 int aNo = (int) resultList.get(0);

2 个答案:

答案 0 :(得分:1)

您使用的查询会返回Tbleaccountcb005916的列表,因为您在查询语句中返回c

List resultList = em.createQuery(
  "SELECT c FROM Tbleaccountcb005916 c WHERE c.wristid LIKE :wId")
.setParameter("wId", WristID)
.setMaxResults(1)
.getResultList();

您可以返回c.accountno或将resultList项投放到Tbleaccountcb005916并访问它的值。

答案 1 :(得分:0)

感谢@Samuel Kok,我找到了答案。我只是将查询更改为" c.accountno"



 @Override
    public void makeDeposit(String WristID, double deposit) {

        List resultList;
        resultList = em.createQuery(
                "SELECT c.accountno FROM Tbleaccountcb005916 c WHERE c.wristid LIKE :wId")
                .setParameter("wId", WristID)
                .setMaxResults(1)
                .getResultList();

        int aNo = (int) resultList.get(0);

        Tbleaccountcb005916 makeDeposit = em.find(Tbleaccountcb005916.class, aNo);
        double balance = makeDeposit.getBalance();
        double Mdeposit = balance + deposit;

        makeDeposit.setBalance(Mdeposit);
        em.persist(makeDeposit);
    }



 调试器的屏幕截图 enter image description here