【问题标题】:Upgrading to hibernate 6: Encountered deprecated setting [javax.persistence.lock.timeout], use [jakarta.persistence.lock.timeout] instead升级到休眠 6:遇到不推荐使用的设置 [javax.persistence.lock.timeout],请改用 [jakarta.persistence.lock.timeout]
【发布时间】:2023-01-25 05:59:59
【问题描述】:

我正在尝试升级到 Hibernate 6,但这会导致大量日志垃圾邮件。对于我的数据库的每个查询,我都会在控制台日志中收到一条警告:

 WARN deprecation:44 - HHH90000021: 
 Encountered deprecated setting [javax.persistence.lock.timeout], use [jakarta.persistence.lock.timeout] instead

我们的代码库不引用 javax.persistence.lock.timeout 并且将 jakarta 属性设置到 persistence.xml 文件中没有任何作用。

这个问题似乎没有在互联网上记录,我只能在 hibernate bug report 团队中找到对此的单一参考,但没有详细信息。

如果相关,我们将通过 C3P0 连接池连接到 AWS RDS 上的 Postgres。

从服务器中删除 C3P0 后此警告继续出现,因此我认为此默认值不是来自那里。

我应该只在我的日志属性文件中抑制这个日志源,还是有其他人正在关注的替代方案?

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    我也遇到了同样的问题。而且它似乎还没有修复(在 6.0.1 中)。

    至少我在 https://github.com/hibernate/hibernate-orm/blob/c18e611ed6786fd62a6bf2d17c39589c2452fe35/hibernate-core/src/main/java/org/hibernate/internal/FastSessionServices.java 中看到旧的(和弃用的)javax.* 属性仍然被设置,然后由 LegacySpecHelper 记录:

    p.putIfAbsent( AvailableSettings.FLUSH_MODE, FlushMode.AUTO.name() );
    p.putIfAbsent( JPA_LOCK_SCOPE, PessimisticLockScope.EXTENDED.name() );
    p.putIfAbsent( JAKARTA_LOCK_SCOPE, PessimisticLockScope.EXTENDED.name() );
    p.putIfAbsent( JPA_LOCK_TIMEOUT, LockOptions.WAIT_FOREVER );
    

    【讨论】:

      【解决方案2】:

      根据HHH-15768,它将在 Hibernate 6.1.7 中得到修复。

      一个临时的解决方法是显式设置该属性(接受的模式定义为here):

      spring.jpa.properties.jakarta.persistence.sharedCache.mode=UNSPECIFIED
      

      有关问题和解决方法的更多信息 - here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-05
        • 2018-05-09
        • 2016-11-27
        • 1970-01-01
        • 2018-01-29
        • 2020-11-11
        • 2017-08-03
        相关资源
        最近更新 更多