Почему класс hibernate ClassMetadata.getIdentifier (Object, EntityMode) устарел - PullRequest
2 голосов
/ 25 ноября 2010

Только что обновился до спящего режима 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.)

1 Ответ

0 голосов
/ 17 декабря 2010

Я задаю себе тот же вопрос.Я понятия не имею, почему это было сделано, но теперь нам нужны грязные кастинги, чтобы использовать публичный API.Это не имеет никакого смысла.

...