我最近得到了最新版本的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