Я пытаюсь преобразовать тип в моей БД в другой тип для использования в моей сущности. Проводя некоторые исследования, я узнал о классе AttributeConverter, определенном в JPA 2.1, я считаю.
Все мои классы созданы из Avro, поэтому аннотации JPA / HBM не будут использоваться
Все классы сопоставляются с использованием файлов hbm.xml, а не сопоставления сущностей.
Все дБ соединения чтения и записи работает. Так что конфиги hbm верны, просто есть проблемы с преобразованием типов.
Relevant Tech Stack
-
HB Version: 4.3.11.Final
JPA Version: 2.1
Я попытался просто добавить конвертер как тип
Это единственное, что я могу попробовать. За пределами аннотаций, которые невозможны с моей реализацией
class.hbm.xml
<hibernate-mapping default-lazy="false">
<class name="ACLASS" table="CASE">
<id name="id" type="long" column="id">
<generator class="native"/>
</id>
<property name="aColumn" type = "dao.converter.DateToLongConverter" column = "A_COLUMN" />
</class>
</hibernate-mapping>
DateToLongConverter.java [Игнорировать логику заполнителя!]
@Converter(autoApply=true)
public class DateToLongConverter implements AttributeConverter<Long, java.sql.Date> {
@Override
public java.sql.Date convertToDatabaseColumn(Long millitime) {
System.out.println(millitime);
return new Date(1);
}
@Override
public Long convertToEntityAttribute(java.sql.Date dbData) {
System.out.println(dbData.toString());
return 1L;
}
}
Результаты с приведенным выше кодом являются просто исключением:
Could not determine type for: dao.converter.DateToLongConverter, at table: ATABLE, for columns: [org.hibernate.mapping.Column(A_COLUMN)]
Я также пытался добавить META-INF / persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence
version="2.1"
xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="case-consumer-persistence">
<class>dao.converter.DateToLongConverter</class>
<class>aClass</class>
</persistence-unit>
</persistence>