【问题标题】:Hibernate version mismatch in WildFly 10.0WildFly 10.0 中的休眠版本不匹配
【发布时间】:2017-08-17 04:33:21
【问题描述】:

我有2个项目,一个是普通java项目(带有maven):core,另一个是非maven动态web项目:webapi。后者充当core 之上的休息层。

core 使用休眠没有任何问题。它定义persistence.xml(在src/META-INF/内)如下:

<?xml version="1.0" encoding="utf-8"?>

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
    version="2.0">

    <persistence-unit name="app" transaction-type="RESOURCE_LOCAL">

        <class>data.entities.Anything</class>
        <class>data.entities.Something</class>

        <properties>
            <property name="javax.persistence.jdbc.driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"></property>
            <property name="javax.persistence.jdbc.url" value="jdbc:sqlserver://localhost;databaseName=AppDb"></property>
            <property name="javax.persistence.jdbc.user" value="****"></property>
            <property name="javax.persistence.jdbc.password" value="****"></property>
            <property name="hibernate.default_schema" value="dbo"></property>           
            <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServer2008Dialect"></property>
            <property name="hibernate.hbm2ddl.auto" value="update"></property>
        </properties>
    </persistence-unit>
</persistence>

webapi 使用core 并尝试将core 的功能公开为服务。我已将core 添加到webapi 的“Java 构建路径”和“部署程序集”中。在我使用 SQL Server 时,sqljdbc42.jar 也被添加到webapi 的“部署程序集”中。

但是,当我尝试在 WildFly 10.0 中部署 webapi 时,休眠实体管理器未正确实例化。我的主要怀疑是corewebapi 中hibernate-core 的版本不匹配。 core 使用 hibernate-core 5.2.4.Final,而对于 webapi,它来自 WildFly 运行时,即 5.0.7.Final。这可以从下面的日志中看出:

  • core日志:

    [HibernateManager.:19] - 尝试为持久化单元创建 entityManager: app

    [LogHelper.logPersistenceUnitInformation:31] - HHH000204:处理 PersistenceUnitInfo [ 名称:应用 ...]

    [Version.logVersion:45] - HHH000412:休眠核心 {5.2.4.Final}

    [Environment.:213] - HHH000206:找不到 hibernate.properties

    [Environment.buildBytecodeProvider:318] - HHH000021:字节码提供者名称:javassist

    [JavaReflectionManager.:66] - HCANN000001:Hibernate Commons Annotations {5.0.1.Final}

    [DriverManagerConnectionProviderImpl.configure:70] - HHH10001002:使用 Hibernate 内置连接池(不用于生产!)

    [DriverManagerConnectionProviderImpl.buildCreator:126] - HHH10001005:在 URL [jdbc:sqlserver://localhost;databaseName=AppDb] 处使用驱动程序 [com.microsoft.sqlserver.jdbc.SQLServerDriver]

    [DriverManagerConnectionProviderImpl.buildCreator:135] - HHH10001001:连接属性:{user=****, password=****}

    [DriverManagerConnectionProviderImpl.buildCreator:140] - HHH10001003:自动提交模式:false

    [PooledConnections.:41] - HHH000115:休眠连接池大小:20 (min=1)

    [Dialect.:153] - HHH000400:使用方言:org.hibernate.dialect.SQLServer2008Dialect

    [Version.:30] - HV000001: Hibernate Validator 5.2.3.Final

    [DdlTransactionIsolatorNonJtaImpl.getIsolatedConnection:47] - HHH10001501:从 JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@19ccca5] 获得的连接(非 JTA)DDL 执行不在自动提交中模式;连接“本地事务”将被提交,连接将设置为自动提交模式。

    [HibernateManager.:22] - 为持久化单元创建 entityManager:app

    [QueryTranslatorFactoryInitiator.initiateService:47] - HHH000397:使用 ASTQueryTranslatorFactory

  • webapi日志:

    [org.jboss.as.jpa](MSC 服务线程 1-2)WFLYJPA0002:读取应用程序的 persistence.xml

    [org.jboss.as.jpa](ServerService 线程池 -- 29)WFLYJPA0010:启动持久性单元(第 1 阶段,共 2 阶段)服务 'webapi.war#app'

    [org.hibernate.jpa.internal.util.LogHelper] (ServerService 线程池 -- 29) HHH000204: 处理 PersistenceUnitInfo [ 名称:应用 ...]

    [org.hibernate.Version] (ServerService 线程池 -- 29) HHH000412: Hibernate Core {5.0.7.Final}

    [org.hibernate.cfg.Environment] (ServerService 线程池 -- 29) HHH000206: hibernate.properties not found

    [org.hibernate.cfg.Environment] (ServerService Thread Pool -- 29) HHH000021: Bytecode provider name : javassist

    [org.hibernate.orm.deprecation] (ServerService Thread Pool -- 29) HHH90000001: 发现指定扫描器 [hibernate.ejb.resource_scanner] 的不推荐使用设置;改用 [hibernate.archive.scanner]

    [org.hibernate.annotations.common.Version] (ServerService 线程池 -- 29) HCANN000001: Hibernate Commons Annotations {5.0.1.Final}

    [org.jboss.as.connector.deployers.jdbc](MSC 服务线程 1-5)WFLYJCA0004:部署 JDBC 兼容的驱动程序类 com.microsoft.sqlserver.jdbc.SQLServerDriver(6.0 版)

    [org.jboss.as.connector.deployers.jdbc](MSC 服务线程 1-5)WFLYJCA0018:使用 driver-name = webapi.war_com.microsoft.sqlserver.jdbc.SQLServerDriver_6_0 启动驱动程序服务

    [org.jboss.as.jpa](ServerService 线程池 -- 29)WFLYJPA0010:启动持久性单元(第 2 阶段,共 2 阶段)服务 'webapi.war#app'

    [org.hibernate.dialect.Dialect](ServerService线程池--29)HHH000400:使用方言:org.hibernate.dialect.SQLServer2008Dialect

    [org.hibernate.envers.boot.internal.EnversServiceImpl] (ServerService Thread Pool -- 29) Envers 集成启用了吗? :是的

    [org.hibernate.validator.internal.util.Version] (ServerService 线程池 -- 29) HV000001: Hibernate Validator 5.2.3.Final

    [org.hibernate.tool.hbm2ddl.SchemaUpdate] (ServerService 线程池 -- 29) HHH000228: 运行 hbm2ddl 模式更新

    [org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl](ServerService 线程池 -- 29)HHH000262:找不到表:任何东西

    [org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl](ServerService 线程池 -- 29)HHH000262:找不到表:Somethings

    [org.wildfly.extension.undertow] (ServerService 线程池 -- 28) WFLYUT0021: Registered web context: /webapi

    [org.jboss.as.server] (DeploymentScanner-threads - 1) WFLYSRV0010:已部署“webapi.war”(运行时名称:“webapi.war”)

如何解决这个问题?

【问题讨论】:

标签: java hibernate wildfly-10


【解决方案1】:

这可以通过更改 Wildfly 中的 Hibernate 核心版本来解决。为此,请像这样更改您的 META-INF/persistence.xml 文件:

<properties>
    <property name="jboss.as.jpa.providerModule" value="org.hibernate:5.2" />
    ...
</properties>

添加一些微版本:

<property name="jboss.as.jpa.providerModule" value="org.hibernate:5.2.4.Final" />

友情链接:http://in.relation.to/2016/07/07/updating-hibernate-orm-in-wildfly/

【讨论】:

  • 感谢您的回答。这似乎有效,因为在上述更改(在widfly中安装hibernate 5.2.4模块,并在persistence.xml中添加属性)之后,错误现在消失了。但是,我面临另一个问题;我想,我会为此发布另一个问题。
  • 跟进问题链接:stackoverflow.com/questions/42997491/…,以防万一您有兴趣
猜你喜欢
  • 2017-05-18
  • 1970-01-01
  • 2017-10-21
  • 2022-11-07
  • 2019-01-27
  • 2013-02-14
  • 2021-05-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多