私はエンティティを持っています:
import java.io.Serializable;
import java.security.SecureRandom;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Convert;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.xml.bind.annotation.XmlRootElement;
import br.com.fidellibre.utils.Suporte;
@Entity
public class Cliente implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@SequenceGenerator(name = "SQ_CLIE_SQ_CLIENTE", sequenceName = "SQ_CLIE_SQ_CLIENTE", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SQ_CLIE_SQ_CLIENTE")
@Column(name = "CLIE_SQ_CLIENTE")
private long codigo;
@Column
private String nome;
@Column
private String login;
@Column
private String celular;
@Column
private String email;
@Column
private String codigoGmail;
@Column
private String codigoTwitter;
@Column
private String codigoFacebook;
@Column
private String codigoAparelho;
@Column(name = "CLIE_DT_ULTIMO_ACESSO")
private LocalDateTime ultimoAcesso;
@Column
private String senha;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "cliente")
private List<Conta> contas;
...
}
とConverter
:
import java.sql.Timestamp;
import java.time.LocalDateTime;
import javax.persistence.AttributeConverter;
import javax.persistence.Converter;
@Converter(autoApply = true)
public class LocalDateTimeConverter implements AttributeConverter<LocalDateTime, Timestamp> {
@Override
public Timestamp convertToDatabaseColumn(LocalDateTime date) {
return date == null ? null : Timestamp.valueOf(date);
}
@Override
public LocalDateTime convertToEntityAttribute(Timestamp dbData) {
return dbData == null ? null : dbData.toLocalDateTime();
}
}
これは私の単体テストでは問題なく動作し、データベースに永続化されます。
しかし、wildfly 9 では同じコードがクラッシュします... :(
クラスを変更するだけで、次の@Converter
ように注釈を付けます。
@Column(name = "CLIE_DT_ULTIMO_ACESSO",columnDefinition="TIMESTAMP")
@Convert(converter = LocalDateTimeConverter.class)
private LocalDateTime ultimoAcesso;
それで、autoApply
それが常に機能しない場合、プロパティを持つことのポイントは何ですか? 私は何を間違っていますか?