弃用后实现Hibernate UserType的最佳方法是什么?

时间:2011-05-21 18:51:07

标签: hibernate usertype

我最近得到了最新版本的Hibernate,并注意到我的UserTypes现在有关于AbstractStandardBasicType的nullSafeGet(ResultSet,String)和nullSafeSet(PreparedStatement,T,int)方法的警告,这些方法是deprecated,有利于它们的相应方法采用SessionImplementor参数。问题是,当您实现UserType时,SessionImplementor不会像BasicType,CompositeUserType等那样传递给您。

我查看了Hibernate手册,看看是否有更新的示例。他们的UserType示例使用get / set而不是nullSafeGet / nullSafeSet,但这些方法也被弃用,而不是采用SessionImplementor的版本。所以,看起来甚至Hibernate的官方UserType示例都使用了弃用的方法,这让我想到了两件事:

  1. 是否有一种从UserType中获取SessionImplementor的好方法?
  2. 如果从UserType中获取SessionImplementor是不切实际的,并且我不想编写自己的nullSafeGet / nullSafeSet,我是否应该放弃UserType以支持其中一个替代方案? UserType与BasicType之间有什么实际区别?

1 个答案:

答案 0 :(得分:5)

感谢Ryan Ransford对我原来问题的评论。虽然它不是问题的真正解决方案,但他从Hibernate开发人员邮件列表中提供的link解释了为什么没有可用的解决方案。

  

3.6.x中不能提供非弃用的替代方法,因为这样做   所以会打破UserType的实现。

考虑到这些只是弃用警告,在下一个非维护版本可用时,在过时方法中投入太多时间是没有意义的。不幸的是,下一个重要版本是4.0,而不是3.7,所以迁移可能会涉及更多。