У меня было много ситуаций, когда мне нужно было сравнить строку с int и наоборот в шаблоне Django.
Я создал фильтр, который позволил мне передать имя функции и с помощью eval () преобразовать его.
Пример:
Шаблон:
{% ifequal string int|convert:'str' %} do something {% endifequal %}
Фильтр шаблона (где я использую строку для вызова имени функции):
@register.filter
def convert(value, funcname):
try:
converted = eval(funcname)(value)
return converted
except:
return value
Посмотрите на UserType . Вам нужно будет вызвать свою фабрику в nullSafeGet () и самостоятельно заполнить все поля. Обратная работа выполняется в nullSafeSet ().
См. Транзакции Hibernate и Spring - с использованием частных конструкторов / статических фабричных методов , но не решение, позволяющее избежать «отражающей установки свойств или полей».
И если это не может быть отображено, делает Hibernate предоставляет возможность настраивать создание объекта по классу по классам base?
Проверить слушателей сущностей. Они добавляют только аннотации, которые вам помогут. Подумайте о @PrePersist или @PostLoad.