Şu satırı dahil ederiz.
import javax.persistence.Converter;
Kendi yazdığım AttributeConverter arayüzünden kalıtan sınıfı JPA'ya tanıtmak içindir.
autoApply Alanı False İse
İlgili alan üzerinde kullanmak gerekir. Şöyle yaparız
Eğer her alana otomatik uygunlansın istersek şöyle yaparız.
autoApply Alanı False İse
İlgili alan üzerinde kullanmak gerekir. Şöyle yaparız
@Converter(converter=LocalDateTimePersitenceConverter.class)
autoApply Alanı True İseEğer her alana otomatik uygunlansın istersek şöyle yaparız.
@Converter(autoApply = true)
public class LocalDateAttributeConverter implements AttributeConverter<LocalDate, Date> {
@Override
public Date convertToDatabaseColumn(LocalDate locDate) {
return (locDate == null ? null : Date.valueOf(locDate));
}
@Override
public LocalDate convertToEntityAttribute(Date sqlDate) {
return (sqlDate == null ? null : sqlDate.toLocalDate());
}
}
ÖrnekElimizde şöyle bir Enum olsun
public enum Status {
ACTIVATED(1), DEACTIVATED(2), SUSPENDED(3);
int statusId;
private Status(int statusId) {
this.statusId = statusId;
}
public int getStatusId() {
return statusId;
}
};
Şöyle yaparız
@Converter
public class CustomerStatusConverter implements
AttributeConverter<Status, Integer> {
@Override
public Integer convertToDatabaseColumn(Status status) {
return status.getStatusId();
}
@Override
public Customer.Status convertToEntityAttribute(Integer statusId) {
return Arrays.stream(Status.values())
.filter(s -> s.getStatusId() == statusId)
.findFirst()
.orElseThrow(IllegalArgumentException::new);
}
}
@Entity
public class Customer {
@Convert(converter = CustomerStatusConverter.class)
private Status status;
...
}
Hiç yorum yok:
Yorum Gönder