Problema com hibernate

10 respostas
hibernate
M

Boas, estou com um problema que quando atualizo um objecto no banco de dados com hibernate, altera dois dos atributos (LocalDate), retirando um dia em ambos.

DAO:

public class EstadiaDao implements Dao<Estadia> {

private EntityManager em;

public EstadiaDao(EntityManager manager) {
    this.em = manager;
}

@Override
public void atualizar(Estadia estadia) {
    comecarTransaction();
    this.em.merge(estadia);
    commitarTransaction();
}

Classe:

@Entity
public class Estadia {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private LocalDate entrada;
private LocalDate saida;
@OneToOne(mappedBy = "estadia")
private Reserva reserva;
@ManyToOne
private Cliente cliente;

Codigo de Teste:

public static void main(String[] args) throws IOException, InvalidFormatException {
        EstadiaDao dao = new EstadiaDao(new JPAUtil().getEntityManager());
        Estadia estadia = dao.get(13);
        estadia.setGaragem(!estadia.temGaragem());
        dao.atualizar(estadia);
        dao.fecharEntityManager();
    }

Já aconteceu a alguém?

10 Respostas

darlan_machado

Qual o problema?

M

Esse

L

Mas qual o objetivo de seu programa, o que você
quer que seu codigo faça?

M

O código acima foi apenas para tentar saber o que estava a acontecer após varias vezes ao guardar o objeto no programa em si (Hotel Management), aparecerem as datas modificadas sem razão aparente. Esse código é suposto apenas alterar um campo do objeto e salvá-lo-

L

certo, entendi, e como é o relacionamento entre as classes: ex: 1 cliente - * reservas?

darlan_machado

Esta aplicação tem hibernate como ORM e o que no front? É web? JSF?

M

Classe cliente:

@Entity
public class Cliente implements Serializable {

@OneToMany(mappedBy = "cliente", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private Set<Estadia> estadias;

}

Classe reserva:

@Entity
public class Reserva {

@OneToOne
private Estadia estadia;

}

Classe Estadia:

@Entity
public class Estadia {

    @OneToOne(mappedBy = "estadia")
    private Reserva reserva;
    @ManyToOne
    private Cliente cliente;
}
M

É uma aplicação swing

darlan_machado

Perguntei sobre jsf pois havia um problema com versões antigas, sempre setavam a data como D - 1…
De qualquer forma, será necessário observar a razão pela qual isso está ocorrendo.
Nada é alterado sem que você, explicitamente, defina isso.

M

Nesse codigo nao tem nada que indique para alterar os dias e muda. Até já meti um sysout no metodo setEntrada() mas nao imprimia nada.

Criado 17 de agosto de 2019
Ultima resposta 20 de ago. de 2019
Respostas 10
Participantes 3