DATEフィールドをデータベースから読み取ったときに、java.time.LocalDate
オブジェクトに変換するような変換を行いました。私はそうしようとすると、しかし、それは私に、このエラーを与える:DATEからjava.time.LocalDateへのJPAコンバータはGlassfish 4.1には適用されていません
The object [3/16/17 12:00 AM], of class [class java.sql.Timestamp], from mapping [org.eclipse.persistence.mappings.DirectToFieldMapping[startDate-->TEST_TABLE.START_DATE]] with descriptor [RelationalDescriptor(com.test.TestEntity --> [DatabaseTable(TEST_TABLE)])], could not be converted to [class [B].
TEST_TABLE
タイプDATE
である列START_DATE
を持っている、私のテーブルです。ここでは、コンバータは、次のとおりです。
import javax.persistence.AttributeConverter;
import javax.persistence.Converter;
import java.sql.Date;
import java.time.LocalDate;
@Converter(autoApply = true)
public class OracleLocalDateAttributeConverter implements AttributeConverter<LocalDate, Date> {
@Override
public Date convertToDatabaseColumn(LocalDate attribute) {
return (attribute != null ? Date.valueOf(attribute) : null);
}
@Override
public LocalDate convertToEntityAttribute(Date dbData) {
return (dbData != null ? dbData.toLocalDate() : null);
}
}
なぜそれが私の列がタイムスタンプであると考えていますか? oracleのすべての日付が強制的にjava.sql.Timestamp
になりますか?