Olá pessoal tenho uma dúvida usando Hibernate.
Como posso incrementar o valor de um campo double sem ter que recuperar o objeto?
Exemplo: Em uma venda parcelada, no acerto da segunda parcela eu quero somar o valor contido no campo valorPago, passando o valor pago na segunda percela. Isso sem recuperar o objeto. Já tentei colocar isso no Pojo:
public void setValorPago(Double valor){
this.valorpago+=valor;
}
Mas deu erro. Qual a melhor solução?
Deu java.lang.NullPointerException bem no método que usei o += (no Pojo).
if (this.valorpago != null) {
this.valorpago= this.valorpago + valor;
}else{
this.valorpago = valor
}
???
Isso quer dizer que valorPago estava com o valor null, não zero. Quando você tem valorPago == null, o que você quer que seja feito?
a) Dizer que valorPago é equivalente a zero. Nesse caso, você faria algo como
if (this.valorPago != null) this.valorPago += valor; else this.valorPago = valor;
b) Deixar como está, já que deve sempre haver um valorPago, mesmo que seja zero - se for null, é porque o valor não foi recuperado da base.
Esse é o método que uso para buscar o objeto:
@SuppressWarnings("unchecked")
public T findById(ID id, boolean lock) {
try {
session = HibernateUtil.getSession();
T entity;
if (lock) {
entity = (T) session.get(persistentClass, id, LockMode.UPGRADE);
} else {
entity = (T) session.get(persistentClass, id);
}
return entity;
} catch (NullPointerException ex) {
System.err.println("Ocorreu um erro" + ex.getMessage());
} catch (Exception e) {
System.err.println("Ocorreu um erro:" + e.getMessage());
} finally {
session.close();
}
return null;
}
Pq ele não está trazendo o valor do banco?