首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Hibernate与hibernate.dialect一起使用时未设置“OpenLiberty”

使用Hibernate与hibernate.dialect一起使用时未设置“OpenLiberty”
EN

Stack Overflow用户
提问于 2020-06-22 17:22:46
回答 1查看 727关注 0票数 0

当我试图将开放自由20与hibernate集成时,它正在丢弃以下堆栈跟踪:

代码语言:javascript
运行
复制
[WARNING ] HHH000342: Could not obtain connection to query metadata : Unable to determine Dialect to use [name=Generic Component Context DataSource, majorVersion=0]; user must register resolver or explicitly set 'hibernate.dialect'
[ERROR   ] CWWJP0015E: An error occurred in the org.hibernate.jpa.HibernatePersistenceProvider persistence provider when it attempted to create the container entity manager factory for the model-unit persistence unit. The following error occurred: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:244)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:208)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:189)
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:51)
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:217)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:189)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.handleTypes(MetadataBuildingProcess.java:352)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:111)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:848)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:876)
    at org.hibernate.jpa.HibernatePersistenceProvider.createContainerEntityManagerFactory(HibernatePersistenceProvider.java:135)
    at com.ibm.ws.jpa.management.JPAPUnitInfo.createEMFactory(JPAPUnitInfo.java:919)
    at [internal classes]
Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
    at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:100)
    at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:54)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:137)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35)
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:88)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:234)
    ... 13 more

我的persistence.xml在META文件夹中,它如下所示

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<persistence xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
                                http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 
             version="2.0" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
             xmlns="http://java.sun.com/xml/ns/persistence">
 
   <persistence-unit name="jpa-unit" transaction-type="JTA">
      <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
      <jta-data-source>jdbc/eventjpadatasource</jta-data-source>
      <properties>
         <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL9Dialect"/>
      </properties>
   </persistence-unit>
</persistence>

我的server.xml包含所有的数据库配置,如下所示:

代码语言:javascript
运行
复制
<server description="new server">

    <!-- Enable features -->
    <featureManager>
        <feature>webProfile-8.0</feature>
        <feature>localConnector-1.0</feature>
    </featureManager>

    <!-- To access this server from a remote client add a host attribute to the following element, e.g. host="*" -->
    <httpEndpoint httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/>
                  
    <!-- Automatically expand WAR files and EAR files -->
    <applicationManager autoExpand="true"/>

    <!-- Default SSL configuration enables trust for default certificates from the Java runtime --> 
    <ssl id="defaultSSLConfig" trustDefaultCerts="true"/>
<dataSource id="eventjpadatasource" jndiName="jdbc/eventjpadatasource" type="javax.sql.XADataSource">
      <jdbcDriver javax.sql.XADataSource="org.postgresql.xa.PGXADataSource" libraryRef="postgresql-library">
        </jdbcDriver>
      <properties databaseName="db_anme" password="12345" portNumber="5432" serverName="127.0.0.1" user="postgres"/>
    </dataSource>
    
    <library id="postgresql-library">
      <fileset dir="${shared.resource.dir}" includes="postgresql*.jar"/>
  </library>

    <applicationMonitor updateTrigger="mbean"/>

    <webApplication id="CategoriesMicroservice" location="CategoriesMicroservice-1.0.war" name="CategoriesMicroservice"/>
</server>

如您所见,hibernate.dialect就在那里。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-22 20:37:39

我的persistence.xml在META文件夹中

类别-1.0.war/META/?

JPA规范;第8.2节:

持久化单元由persistence.xml文件定义。其META目录包含persistence.xml文件的jar文件或目录称为持久性单元的根目录。在Java环境中,持久化单元的根必须是以下之一:

  • a EJB-JAR文件
  • WAR file87
  • 的WEB/

目录WAR -INF/lib目录中的WAR文件

  • jar文件EAR库目录

H 111应用程序客户端jar文件H 212f 213

但是,如果persistence.xml的包装不正确,您就应该得到有关缺少jpa-unit的持久性单元引用的异常。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62520068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档