Ich habe einen Konverter so, dass, wenn ich DATE Felder aus der Datenbank gelesen, sollte es in der Lage sein, sie zu java.time.LocalDate
Objekte zu zwingen. Allerdings, wenn ich versuche, dies zu tun, es gibt mir diese Fehlermeldung:JPA-Konverter von DATE zu java.time.LocalDate nicht in 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
ist meine Tabelle, die eine Spalte hat START_DATE
die vom Typ ist DATE
. Hier ist der Konverter:
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);
}
}
Warum denkt es, dass meine Spalte ein Zeitstempel ist? Werden alle Daten in Orakel zu java.sql.Timestamp
gezwungen?