有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JPQL将列表添加到HashMap中,并将列表记录相乘

各位程序员好,我想在HashMap中添加循环中的多个列表。我不知道为什么当它到达第二次迭代时,记录会成倍增加,例如,2月份有10条记录(monthId=2),而在整个循环之后,有40条记录被注入。代码如下:

public HashMap<String,List<Transaction>> convertTransactionsPerMonth(int 
userId){
    for(int monthId = 1; monthId < 13; monthId++){
    ArrayList<Transaction> transactionsFromDatabase = new ArrayList<> 
    (entityManager
            .createQuery("SELECT t FROM Transaction t WHERE 
    MONTH(t.transactionDate) LIKE :monthId AND t.user.id = :userId", 
    Transaction.class)
            .setParameter("monthId", monthId)
            .setParameter("userId", userId)
            .getResultList());
    transactionsPerMonth.put(Months.getById(monthId), 
    transactionsFromDatabase);
    }
    return transactionsPerMonth;
}

共 (1) 个答案

  1. # 1 楼答案

    在sql中比较两个数字时,使用=而不是LIKE

    "SELECT t FROM Transaction t WHERE 
    MONTH(t.transactionDate) = :monthId AND t.user.id = :userId"
    

    另外,它看起来像是在方法之外声明了transactionsPerMonth,然后返回,您确定在调用方法时它是空的吗?最好将其声明为局部变量