// El número de factura para una factura nueva private String getCodigo() { // Usamos inicialización vaga if (codigo == null) { // Una consulta JPA para obtener el último número Query query = getManager().createQuery("select max(f.codigo) from Factura f where f.ano = :ano"); // Dates es una utilidad de OpenXava query.setParameter("ano", Dates.getYear(new Date())); Integer lastNumber = (Integer) query.getSingleResult(); if (lastNumber == null) lastNumber = 0; // Añadimos 1 al último número de factura codigo = Integer.toString(lastNumber + 1); } return codigo; }