我最近得到了最新版本的Hibernate,並注意到我的UserTypes現在有關於AbstractStandardBasicType的nullSafeGet(ResultSet,String)和nullSafeSet(PreparedStatement,T,int)方法的警告,它們支持使用SessionImplementor參數的相應方法deprecated。問題是,當你實現一個UserType時,SessionImplementor不會像BasicType,CompositeUserType等那樣傳遞給你。棄用後實現Hibernate UserType的最佳方式是什麼?
我檢查了Hibernate手冊,看看是否有更新的例子。他們的UserType示例使用get/set而不是nullSafeGet/nullSafeSet,但這些方法也被棄用,以支持採用SessionImplementor的版本。所以,好像連Hibernate的官方用戶類型的例子是使用過時的方法,這使我想知道兩件事情:
- 有沒有好的辦法從用戶等級和積分中拿到SessionImplementor?
- 如果從UserType中獲取SessionImplementor並且不想寫我自己的nullSafeGet/nullSafeSet,我是否應該放棄UserType以支持其替代選項之一? UserType和BasicType之間的實際區別是什麼?
在hibernate-dev郵件列表中有關於此主題的對話:[here](http://lists.jboss.org/pipermail/hibernate-dev/2011-February/006030.html) – 2011-08-23 17:04:58
有沒有解決這個問題在4.1.0.Final?它似乎不是如此... – MetaChrome 2012-04-09 23:25:08
我希望我能告訴你。我遷移到JPA,並堅持使用標準的JPA註釋,但不幸的是,它不支持任何類似UserTypes的註釋。 – spaaarky21 2013-01-04 00:30:29