Hibernate的版本不匹配WildFly 10.0(Hibernate version mism

2019-09-29 21:36发布

我有2个项目,一个是普通的Java项目(与Maven): core ,而其他非行家的动态Web项目: webapi 。 后来作为上的顶部的其余层core

core使用Hibernate没有任何问题。 它定义了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到了“Java构建路径”,和“部署大会” webapi 。 由于我使用SQL Server, sqljdbc42.jar也被添加到“部署大会” webapi

然而,当我尝试部署webapi在WildFly 10.0,休眠实体管理器无法正常初始化。 我的主要犯罪嫌疑人在Hibernate核心,这里的版本不匹配core ,和webapicore使用hibernate-core 5.2.4.Final ,而对于webapi它从WildFly运行时,这是未来5.0.7.Final 。 这可以从下面的日志中可以看出:

  • core日志:

    [HibernateManager.:19] - 尝试创建的EntityManager用于持久性单元:应用

    [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:休眠共享注释{5.0.1.Final}

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

    [DriverManagerConnectionProviderImpl.buildCreator:126] - HHH10001005:使用驱动器[com.microsoft.sqlserver.jdbc.SQLServerDriver]在URL [JDBC:SQLSERVER://本地主机;的databaseName = AppDb]

    [DriverManagerConnectionProviderImpl.buildCreator:135] - HHH10001001:连接属性:{用户= ****,密码= ****}

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

    [PooledConnections.:41] - HHH000115:休眠连接池尺寸:20(分钟= 1)

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

    [Version.:30] - HV000001:Hibernate验证5.2.3.Final

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

    [HibernateManager.:22] - 创建的EntityManager用于持久性单元:应用

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

  • webapi日志:

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

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

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

    [org.hibernate.Version](Server服务线程池- 29)HHH000412:休眠核心{5.0.7.Final}

    [org.hibernate.cfg.Environment中(Server服务线程池 - 29)HHH000206:不是的hibernate.properties发现

    [org.hibernate.cfg.Environment中(Server服务线程池 - 29)HHH000021:字节码供应商名称:Javassist进行

    [org.hibernate.orm.deprecation](Server服务线程池 - 29)HHH90000001:用于指定扫描仪弃用设定的实测值使用[hibernate.ejb.resource_scanner]; 用[hibernate.archive.scanner]代替

    [org.hibernate.annotations.common.Version](Server服务线程池 - 29)HCANN000001:休眠共享注释{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:带有驱动器名称开始驱动程序服务= webapi.war_com.microsoft.sqlserver.jdbc.SQLServerDriver_6_0

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

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

    [org.hibernate.envers.boot.internal.EnversServiceImpl(Server服务线程池 - 29)启用Envers整合? :真

    [org.hibernate.validator.internal.util.Version](Server服务线程池 - 29)HV000001:Hibernate验证5.2.3.Final

    [org.hibernate.tool.hbm2ddl.SchemaUpdate(Server服务线程池 - 29)HHH000228:运行就是hbm2ddl架构更新

    [org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl](Server服务线程池- 29)HHH000262:表未找到:Anythings

    [org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl](Server服务线程池- 29)HHH000262:表未找到:出头

    [org.wildfly.extension.undertow](Server服务线程池 - 28)WFLYUT0021:注册Web上下文:/的WebAPI

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

这可怎么解决?

Answer 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/



文章来源: Hibernate version mismatch in WildFly 10.0