@KyleM Я перешел на строгий подход JPA и не могу сказать наверняка. В JavaDocs Hibernate 4.2 я вижу, что устаревшие методы были удалены, но все еще есть методы nullSafeGet () / Set (), которые принимают SessionImplementor. Я предполагаю, что ваш UserType будет реализовывать эти методы вместо этого, но я не могу комментировать правильный подход, поскольку я никогда не делал это сам.

но я получил последнюю версию Hibernate и заметил, что в моих UserTypes теперь есть предупреждения о том, что методы AbstractStandardBasicType nullSafeGet (ResultSet, String) и nullSafeSet (PreparedStatement, T, int) являютсяосуждается в пользу их соответствующих методов, которые принимают аргумент SessionImplementor. Проблема в том, что когда вы реализуете UserType, SessionImplementor не передается вам так же, как в BasicType, CompositeUserType и т. Д.

Я проверил руководство Hibernate, чтобы увидеть, был ли обновленный пример. Их пример UserType использует get / set вместо nullSafeGet / nullSafeSet, но эти методы также устарели в пользу версий, которые принимают SessionImplementor. Таким образом, кажется, что даже официальный пример UserType Hibernate использует устаревшие методы, что заставляет меня задуматься о двух вещах:

Есть ли хороший способ получить SessionImplementor из UserType?Если получить SessionImplementor изнутри UserType нецелесообразно и я не хочу писать свой собственный nullSafeGet / nullSafeSet, следует ли мне отказаться от UserType в пользу одной из его альтернатив? Каковы практические различия между UserType и, например, BasicType?