Выравнивание Double с вычисленным значением Double из метода приводит к 0,0?В чем может быть проблема? - PullRequest
0 голосов
/ 22 февраля 2019

Для этих выражений:

     if (lim != null) {


         for (int i = 0; i < itemlist.size(); i++) {              

            Double itemquantity = calculateQuantity(itemlist.get(i));

            Integer limitvalue = lim.getValue();

            System.out.println("CALCULATED VALUE IS: " + calculateQuantity(itemlist.get(i)));

            System.out.println("ITEMQUANTITY IS " + itemquantity);

            System.out.println("LIMIT VALUE IS " + limitvalue);

           if (itemquantity < limitvalue) {
               System.out.println("QUANTITY " + itemquantity + " vs LIMIT " + limitvalue);
           below.add(itemlist.get(i).getName());
        }}

Я получаю следующие результаты:

CALCULATED VALUE IS: **210.0** 
ITEMQUANTITY IS **0.0** 
LIMIT VALUE IS **500** 
QUANTITY 0.0 vs LIMIT 500

Вот метод convertQuantity (), который возвращает Double, но этот метод работает каквидно по выводу:

     public Double calculateQuantity(Items item)
        {
        Double quantity = 0.0;     
        int ID = item.getItemId();
            try {
                session = sessionFactory.openSession();
                transaction = session.beginTransaction();

                Query query = session.createQuery("select sum(t.flow * a.inOrOut) from Advicenote a join a.transactions t join t.item i where i.itemId = :keyword group by i.itemId");

                query.setParameter("keyword", ID);
                transaction.commit();
                if (query.uniqueResult() == null || query.list().isEmpty()) {
                    quantity = 0.0;                
                } 
                else{     
                quantity = Double.valueOf(query.uniqueResult().toString()); 

                }}catch (HibernateException e) {
            if (transaction != null) {
                transaction.rollback();
            }

}finally{
                        session.close();
                        return quantity;
                        }}

Итак, мой вопрос, , почему я получаю 0, когда пытаюсь приравнять результат calcQuantity () к значению Double? И как можно сделатьitemquantity < limitvalue если оператор сработает (первый должен быть Double / double, а второй - Integer / int)?

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Может быть HibernateException, когда он запускается в первый раз, поместите какой-нибудь оператор print в блок catch (HibernateException e) и посмотрите.

0 голосов
/ 22 февраля 2019

Скорее всего ветка под

    if(query.uniqueResult() == null || query.list().isEmpty())

запускается.Это означает, что существует проблема с вашим запросом, которая выходит за рамки этого вопроса.

Должно работать следующее:

    if(itemquantity < limitvalue)

Поскольку Java поддерживает сравнение между различными числовыми типами без явногоКастинг.double и int оба в этой категории.

...