替代 Hibernate 已弃用的类型注释?

Joh*_*olt 31 java hibernate

升级到 Hibernate 5.6.0.Final 后,我发现 org.hibernate.annotations.Type 现已弃用。我在许多实体中使用此注释,包括我利用 Hibernate 自己的 NumericBooleanType 的地方:

 @Type(type = "org.hibernate.type.NumericBooleanType")
 private Boolean debug = false;
Run Code Online (Sandbox Code Playgroud)

我搜索了 Hibernate 文档(迁移指南 - 其中 6.0 版本从http://hibernate.org/orm/documentation/6.0/给了我一个 404 )、Javadocs、论坛和网络来寻找替代品,但没有找到有用。

有谁知道我现在可以在 Hibernate 5.6.0 中做什么来使用类型注释准备我的代码以过渡到 Hibernate 6?

Gow*_*nan 27

对于那些想知道 hibernate 6 的替代方法是什么的人,您必须将其更改为:

@Type(type = "org.hibernate.type.NumericBooleanType")
private Boolean debug = false;
Run Code Online (Sandbox Code Playgroud)

对此:

@Convert(converter = org.hibernate.type.NumericBooleanConverter.class)
private Boolean debug = false;
Run Code Online (Sandbox Code Playgroud)

请参阅 - https://docs.jboss.org/hibernate/orm/6.0/userguide/html_single/Hibernate_User_Guide.html#basic-boolean


Sto*_*ica 25

编辑:更改已在 5.6.3 中恢复。不应该再有任何弃用警告。


在升级到 6.0 之前,您无能为力,除非有足够多的人抱怨这个问题,他们恢复了 5.6.1 或其他版本中的更改。

Hibernate 做出了一个不寻常的决定,在出现任何替代品之前就尽早弃用这些注释。

我不知道为什么。它唯一会做的就是让人们压制警告,然后在 6.0 发布时忘记它,永远不会做出改变。

  • 刚刚在升级到 SpringBoot 2.6.1 时发现了这个带有“@TypeDef”注释的注释,它引入了 Hibernate 5.6.1 Final - 在提供替代品之前弃用的非常奇怪的方法。我们现在无法摆脱烦人的警告(除非我们恢复)。 (3认同)
  • @SteveEbersole Java 文档说“注释为 \@Deprecated 的程序元素是不鼓励程序员使用的。”,但这里的情况并非如此。如果 Hibernate 打算建议在 Hibernate 5 中不要使用自定义类型,那么它在任何地方都没有对此进行解释。 (2认同)