JPA + Java Time

1 resposta
vinicius_roc

Boa noite,

Estou tentando criar meu projeto utilizando o java.time do java 8.

Porém não estou conseguindo. Tentei criar um converter e mesmo assim o erro persiste.

Poderiam dar uma olhada e vê se o que pode estar errado por favor?

O erro é

org.hibernate.HibernateException: Unknown wrap conversion requested: [B to java.util.Date

Meu bean

@Entity
@Table(name = "user")
public class User {

	@Id
	private Long idUser;

	@Column
	private String name;
	@Column
	private String email;
	@Column
	private String password;
	@Column
	private Integer type;

	@Column(name = "dt_created")
	private LocalDate dtCreated;

	@Column(name = "dt_last_login")
	private LocalDate dtLastLogin;

        //getters & setters
}

Meu converter

@Converter(autoApply = true)
public class LocalDateConverter implements AttributeConverter<LocalDate, Date> {

    @Override
    public Date convertToDatabaseColumn(LocalDate date) {
        Instant instant = Instant.from(date);
        return Date.from(instant);
    }

    @Override
    public LocalDate convertToEntityAttribute(Date value) {
        Instant instant = value.toInstant();
        return LocalDate.from(instant);
    }
}

Muito obrigado pela ajuda

1 Resposta

vinicius_roc

Eu descobri como fazer funcionar, mas fiquei com uma duvida.

Para fazer funcionar, eu passei a usar o java.sql.Date ou inves do java.util.Date.

Quando eu fiz isso ele mudou o erro, falando que não consegue converter Timestamp para java.sql.Date aí ao invés de utiliza o Date passei a usar o Timestamp.

Como resultado meu converter ficou assim

@Converter(autoApply = true)
public class LocalDateConverter implements AttributeConverter<LocalDateTime, Timestamp> {

    @Override
    public Timestamp convertToDatabaseColumn(LocalDateTime date) {
        return (date == null ? null : Timestamp.valueOf(date));
    }

    @Override
    public LocalDateTime convertToEntityAttribute(Timestamp value) {
    	return (value == null ? null : value.toLocalDateTime());
    }
}

A minha dúvida é. Como eu sei se devo utilizar Timestamp ou sql.Date?

Criado 26 de janeiro de 2016
Ultima resposta 26 de jan. de 2016
Respostas 1
Participantes 1