Только что обновился до спящего режима 3.6.0 и обнаружил, что этот метод устарел.
public Serializable getIdentifier(Object object, EntityMode entityMode) throws HibernateException;
Это было «заменено» этим
public Serializable getIdentifier(Object entity, SessionImplementor session);
Я не уверен, почему это было сделано, и, что более важно, я не верю, что новый метод является подходящей заменой.
У меня есть код, который связывает объекты / свойства гибернации с помощью этого API для создания объектов гибернации из XML (атрибуты-> свойства и т. Д.) И некоторых других фрагментов.
Я всегда считал ClassMetadata общедоступным API, который должен использоваться для этой цели. И я знал, что SessionImplementor - это внутренний API, который не предназначен для использования в коде приложения.
Предполагая, что я прав в двух вышеупомянутых утверждениях, кажется неправильным, что публичный API требует частного API в качестве параметра?
Кто-нибудь знает, почему это было сделано и как я должен подходить к выполнению программного доступа к объектам спящего режима в будущем?
(Интересно, что методы получения / установки значения свойства по-прежнему принимают EntityMode.)