Дата задачи Дата в методе jsf

Это может быть глупый вопрос, но я не смог решить проблему. У меня есть следующие методы:

public long contarPedidosMeses(int cedulaCliente, int codigoProducto, Date fechaIni, Date fechaFin){

    Query q;
    q = em.createNativeQuery("SELECT COUNT(*) FROM pedidos, pedidoproducto WHERE fechaDeSolicitud BETWEEN ? AND ? and pedidos.cedulaCliente=? and pedidoproducto.codigoProducto=? and pedidos.idPedido= pedidoproducto.idPedido");
    q.setParameter(1,fechaIni);
    q.setParameter(2, fechaFin);
    q.setParameter(3, cedulaCliente);
    q.setParameter(4, codigoProducto);
    long valor=Long.parseLong(q.getSingleResult().toString());
    return valor;
}


public long valoresMeses(Date fechaI, Date fechaF, int cedula, int codigo){

    long valores= productosf.contarPedidosMeses(cedula, codigo, fechaI, fechaF);
    return valores;
}

У меня проблема в том, что я не знаю, как передавать данные Date при вызове метода. Поэтому этот вопрос мне не подходит.

Я попытался сделать следующее:

controladorProducto.valoresMeses('2016/01/01', '2016/01/31', controladorUsuario.objUsuarioLogin.idUsuario, 1)

Также изменил место чисел, т. Е. (Дд / мм / гггг), но это тоже не работает. В методе valuesMonths () я изменил, что я получаю не Date, а String, и я пытаюсь преобразовать его с помощью SimpleDateFormat, но при преобразовании мне отправляется совсем другая дата. Я не знаю, что еще делать, буду очень признателен за вашу помощь.

Я работаю в jsf, JPA и базе данных MySQL.

1
задан 03.09.2019, 20:46
1 ответ

Твои параметры должны быть типа Date. Если ты хочешь построить объекты типа Date начиная с цепи текста (для твоих доказательств, может быть), я рекомендую использовать тебе SimpleDateFormat:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
Date fechaI = sdf.parse("2016/01/01");
Date fechaF = sdf.parse("2016/01/31");
int cedula = ...;
int codigo = ...;
valoresMeses(fechaI, fechaF, cedula, codigo);

Ты можешь уберегаться работа, создав утилитарные методы:

//diseño básico, puede ser mejorado
public class MiDateUtils {
    public static Date parseaFecha(String fecha) {
        return parseaFecha(fecha, "yyyy/MM/dd");
    }
    //en caso que necesites utilizar otro formato como dd-MM-yyyy o dd/MM/yyyy o MM/dd/yyyy u otro
    public static Date parseaFecha(String fecha, String formato) {
        Date resultado = null;
        try {
            SimpleDateFormat sdf = new SimpleDateFormat(formato);
            resultado = sdf.format(fecha);
        } catch (Exception e) {
            //maneja la excepción, mandalo a un log o algo
        }
        return resultado;
    }
}

Так предыдущий код сокращается в:

Date fechaI = MiDateUtils.parseaFecha("2016/01/01");
Date fechaF = MiDateUtils.parseaFecha("2016/01/31");
int cedula = ...;
int codigo = ...;
valoresMeses(fechaI, fechaF, cedula, codigo);
1
ответ дан 24.11.2019, 14:17

Теги

Похожие вопросы