刚升级到hibernate 3.6.0,发现这个方法被弃用了。
public Serializable getIdentifier(Object object, EntityMode entityMode) throws HibernateException;
它已经被这个“取代”了
public Serializable getIdentifier(Object entity, SessionImplementor session);
我不确定为什么要这样做,更重要的是,我不认为新方法是合适的替代方法。
我有代码通过使用此 API 从 XML(属性-> 属性等)和其他一些零碎的部分创建 hibernate 对象来绑定(bind) hibernate 对象/属性。
我一直认为 ClassMetadata 是用于此目的的公共(public) API。而且我知道 SessionImplementor 是一个内部 API,不能用于应用程序代码。
假设我在上述两个断言中是正确的,那么公共(public) API 需要私有(private) API 作为参数似乎是错误的?
有谁知道为什么要这样做以及我将来应该如何进行程序化 hibernate 对象访问?
(有趣的是,获取/设置属性值的方法仍然采用 EntityMode。)
最佳答案
我问自己同样的问题。我不知道为什么这样做,但现在我们需要一些肮脏的转换来使用公共(public) API。这根本没有意义。
关于java - 为什么不推荐使用 hibernate 的 ClassMetadata.getIdentifier(Object, EntityMode),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4275502/