2016-03-13 2 views
2

Я пытаюсь суммировать столбец, но я получаю исключение из null-указателя, и я не знаю, что я делаю неправильно.Прогнозирование суммы баллов

ChartVentaVendedores chart = new ChartVentaVendedores(); 
Criteria facturas = getSession().createCriteria(Factura.class); 
facturas.add(Restrictions.like("estado", "CONFIRMADO")); 
facturas.add(Restrictions.between("fechaCreacion", fromDate, toDate)); 

Criteria vendedorFactura = facturas.createCriteria("idVendedor"); 
vendedorFactura.add(Restrictions.eq("idUsuario", idVendedor)); 
facturas.setProjection(Projections.sum("total")); 

Long counter = (Long) facturas.uniqueResult(); 
int value = counter.intValue(); 
chart.setValue(counter.intValue());    
chart.setDate(fromDate); 

Даже если бы я не делал джойн, я все еще получаю null.

Я попытался изменить тип Long counter = (Long) facturas.uniqueResult(); на BigInteger, но я по-прежнему получаю ту же ошибку.

Мой класс:

@Entity 
@Table(name = "factura") 
public class Factura implements Serializable { 

    private int idFactura; 
    private Cliente cliente; 
    private String estado; 
    private Usuarios idVendedor; 
    private Date fechaCreacion; 
    private Date fechaModificacion; 
    private Integer usuarioCreacion; 
    private Integer usuarioModificacion; 
    private BigInteger total; 
    private String tipoFactura; 

    .... 
} 
+0

Вы уверены, что у вас есть конкретные данные в базе данных? – ByeBye

+0

yeap, у меня есть другая функция, подобная этой, но она подсчитывает количество строк, и она отлично работает с датой моего db. –

+0

Я думаю, что ваш 'Projections.sum (« total »)' не может суммировать BigIntegers, поскольку у них нет автобоксинга. Ваша другая функция sum BigIntegers? – ByeBye

ответ

1

Я думаю, что ваш Projections.sum("total") не может подвести BigInteger, поскольку он не имеет Autoboxing.

Если вы можете, попробуйте изменить BigInteger на Integer или Long.

0

Просто попытался это подытожить ID городов в h2 дб, подводит итог по мере необходимости.

Criteria vendedorFactura = HibernateUtil.getSession().createCriteria(City.class); 
     vendedorFactura.add(Restrictions.eq("name", city.getName())); 
     vendedorFactura.setProjection(Projections.sum("id")); 
     Long counter = (Long) vendedorFactura.uniqueResult(); 
     System.out.println("Counter:"+counter); 

Counter:1161 (Sum of 1 33 65 97 129 161 193 225 257)

Смежные вопросы