JodaTime DateTime alanlarını JPA ile PostgreSQL'e devam ettirmeye çalışıyorum ancak boş NULL değerleri ile boşluksuz göstergelerle karşılaşıyorum.JPA, PostgreSQL ve NULL değerleri ile JodaTime
NetBeans 7 beta 2 IDE ile çalışıyorum. Kalıcılık uygulaması EclipseLink 2.2.0 ve eşlemenin çalışması için bir EclipseLink Converter kullanıyorum.
@Converter(
name="dateTimeConverter",
converterClass=ejb.util.DateTimeConverter.class
)
@Column(columnDefinition="TIMESTAMP WITH TIME ZONE")
@Convert("dateTimeConverter")
private DateTime testdate;
dönüştürücü sınıfı: Bu sürece gerçek bir DateTime seti olmadığı için çalışıyor
public class DateTimeConverter implements Converter {
private Logger log;
private static final long serialVersionUID = 1L;
@Override
public Object convertObjectValueToDataValue(Object o, Session sn) {
if (o == null) {
log.info("convertObjectValueToDataValue returning null");
return null;
}
return ((DateTime)o).toDate();
}
@Override
public Object convertDataValueToObjectValue(Object o, Session sn) {
if (o == null) {
log.info("convertDataValueToObjectValue returning null");
return null;
}
return new DateTime(o);
}
@Override
public boolean isMutable() {
return true;
}
@Override
public void initialize(DatabaseMapping dm, Session sn) {
log = Logger.getLogger("ejb.util.DateTimeConverter");
}
}
İşte benim alanın ilanıdır. Ama ayarlanmadığı anda EclipseLink bir string tipini kabul ediyor gibi görünüyor ve postgresql, type karakterinin değeri hakkında şikayette bulunmaya başlar. Bunun nedeni, dönüştürücü sınıfının bir tarih nesnesi yerine boş bir gösterici döndürmesi ve EclipseLink'in varsayılan değerlere geri döndüğü varsayılmaktadır.
Düz java.util.Date anahtarına geçiş yapmanın bir yolu var mı?
sınıfında "@ Temporal" açıklamasını eklemeyi denediniz mi? 'Özel DateTime testdate' alanına mı? –
Evet, ancak dağıttığımda, EclipseLink aslında, dönüştürücü nedeniyle @Temporal ek açıklamayı görmezden geleceğine dair bir ileti kaydeder. – Eelke