我最近得到了最新版本的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示例都使用了弃用的方法,这让我想到了两件事:
答案 0 :(得分:5)
感谢Ryan Ransford对我原来问题的评论。虽然它不是问题的真正解决方案,但他从Hibernate开发人员邮件列表中提供的link解释了为什么没有可用的解决方案。
3.6.x中不能提供非弃用的替代方法,因为这样做 所以会打破UserType的实现。
考虑到这些只是弃用警告,在下一个非维护版本可用时,在过时方法中投入太多时间是没有意义的。不幸的是,下一个重要版本是4.0,而不是3.7,所以迁移可能会涉及更多。