2010-11-25 29 views
2

Juste mis à jour vers Hibernate 3.6.0 et trouvé que cette méthode est obsolète.Pourquoi ClassMetadata.getIdentifier d'hibernate (Object, EntityMode) a-t-il été déprécié?

public Serializable getIdentifier(Object object, EntityMode entityMode) throws HibernateException; 

Il a été « remplacé » par ce

public Serializable getIdentifier(Object entity, SessionImplementor session); 

Je ne sais pas pourquoi cela a été fait, et plus important encore, je ne crois pas que la nouvelle méthode est un remplacement approprié.

J'ai un code qui lie les objets/propriétés d'hibernation en utilisant cette API pour créer des objets d'hibernation à partir de XML (attributs-> propriétés etc) et d'autres éléments.

J'ai toujours considéré que ClassMetadata était une API publique qui doit être utilisée à cette fin. Et j'ai été conscient que SessionImplementor est une API interne qui ne doit pas être utilisée comme code d'application.

En supposant que j'ai raison dans les deux affirmations ci-dessus, il semble erroné qu'une API publique nécessite une API privée en tant que paramètre?

Est-ce que quelqu'un sait pourquoi cela a été fait et comment je devrais être en train de faire l'accès aux objets Hibernate programmatique à l'avenir?

(Fait intéressant le paramètre obtenir/méthodes de valeur de propriété prennent encore un EntityMode.)

Répondre

0

Je me pose la même question. Je n'ai aucune idée pourquoi cela a été fait, mais maintenant nous avons besoin de quelques castings sales pour utiliser une API publique. Cela n'a aucun sens.