Я пытаюсь сгенерировать классы MetalModel, используя org.hibernate:hibernate-jpamodelgen
, и он пропускает мои поля, помеченные @Convert
аннотацией, например:
@Entity
public class Item {
@Column
@Convert(converter = StuffConverter.class)
private Stuff stuff;
}
public class StuffConverter implements AttributeConverter<Stuff, String> {
@Override
public String convertToDatabaseColumn(Stuff attribute) {
// serialize to json
}
@Override
public Stuff convertToEntityAttribute(String dbData) {
// deserialize from json
}
}
Интересно, что если я отмечу поля? с аннотацией @Basic
она находится в сгенерированном классе метамодели, но я не уверен, что поле для пометки @Basic
будет правильным, как указано в документации:
The
* <code>Basic</code> annotation can be applied to a persistent
* property or instance variable of any of the following types: Java
* primitive types, wrappers of the primitive types
... [skipped for brevity]
Интересно, что юнит-тесты генератораПроверьте следующий случай, и он отлично работает:
@ElementCollection
@Convert(converter = ItemRoleConverter.class)
private Set<Role> roles = new HashSet<>();
Но в моем случае это не коллекция.