CriteriaBuilder Cast Cast Дата, чтобы долго - PullRequest
0 голосов
/ 21 мая 2018

У меня есть следующая таблица:

CREATE TABLE "pre_vendas" (
    "id_prev_venda" BIGINT NOT NULL,
    "data_prev_venda" DATE NOT NULL,
    "data_real_venda" DATE NOT NULL,    
    "valor_real_venda" NUMERIC(10,2) NULL DEFAULT NULL, 
    PRIMARY KEY ("id_prev_venda")
);

PreVenda.class

@Entity
@Table(name = "pre_vendas")
@XmlRootElement
public class PreVenda implements Serializable {

    private static final long serialVersionUID = 1345540614644262508L;

    @Id
    @GeneratedValue(generator = "pre_venda_seq_gen")
    @GenericGenerator(name = "pre_venda_seq_gen", strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator", parameters = {
            @Parameter(name = "sequence_name", value = "seq_pre_venda"), @Parameter(name = "optimizer", value = "hilo"),
            @Parameter(name = "initial_value", value = "1"), @Parameter(name = "increment_size", value = "1") })
    @Column(name = "id_prev_venda", nullable = false)
    private Long idPrevVenda;

    @Column(name = "data_prev_venda", nullable = false)
    @Temporal(TemporalType.DATE)
    private Date dataPrevVenda;

    @Column(name = "data_real_venda", nullable = false)
    @Temporal(TemporalType.DATE)
    private Date dataRealVenda;

    @Column(name = "valor_real_venda", nullable = false, precision = 10, scale = 2)
    private BigDecimal valorRealVenda;

}

У меня проблемы с преобразованием дат в числовом формате (только цифры), я пытаюсьвот так:

CriteriaBuilder builder = sf.getCurrentSession().getCriteriaBuilder();
CriteriaQuery<Tuple> criteria = builder.createTupleQuery();
Root<PreVenda> root = criteria.from(PreVenda.class);

Expression<Long> dataPrevVenda = root.get(PreVenda_.dataPrevVenda).as(Long.class);

Expression<Long> dataRealVenda = root.get(PreVenda_.dataRealVenda).as(Long.class);

criteria.select(builder.tuple(builder.diff(dataRealVenda,dataPrevVenda)));

это возвращает исключение приведения, кто-нибудь знает, как решить эту проблему?

...