当前位置: 首页 > 知识库问答 >
问题:

如何从datasource生成hibernate.cfg.xml数据

弘志勇
2023-03-14

我在连接数据源时遇到问题。

此错误显示API在API中运行此函数时:

UserEntity user = userDAOImpl.getUserById(id);

2019-08-20 23:30:04.672错误20424---[nio-8080-exec-4]O.A.C.C.C.[.[.[/].[dispatcherServlet]:路径为[]的上下文中servlet[dispatcherServlet]的servlet.Service()引发异常[处理程序调度失败;嵌套异常为java.lang.NoClassDefoundError:无法初始化类org.SpringFramework.web.Accept.PathExtensionContentNegotiationStrategy$ActivationMediaTypeFactory],其根本原因是

我认为问题是没有与数据源的连接。

这是hibernate.cfg.xml文件内容


    <?xml version='1.0' encoding='utf-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
            "-//Hibernate/Hibernate Configuration DTD//EN"
            "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
      <session-factory>
        <property name="connection.url" />
        <property name="connection.driver_class" />
        <!-- <property name="connection.username"/> -->
        <!-- <property name="connection.password"/> -->

        <!-- DB schema will be updated if needed -->
        <!-- <property name="hibernate.hbm2ddl.auto">update</property> -->
      </session-factory>
    </hibernate-configuration>

这是pom


    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>

      <groupId>au.edu.rmit.rjeth.events</groupId>
      <artifactId>EventsAPI</artifactId>
      <version>1.0-SNAPSHOT</version>

      <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.9.RELEASE</version>
      </parent>

      <dependencies>
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
          <groupId>org.junit.jupiter</groupId>
          <artifactId>junit-jupiter-api</artifactId>
          <version>5.4.2</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>org.junit.jupiter</groupId>
          <artifactId>junit-jupiter-engine</artifactId>
          <version>5.4.2</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>org.json</groupId>
          <artifactId>json</artifactId>
          <version>20190722</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-jdbc</artifactId>
          <version>5.1.9.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.hibernate.orm/hibernate-core -->
        <dependency>
          <groupId>org.hibernate.orm</groupId>
          <artifactId>hibernate-core</artifactId>
          <version>6.0.0.Alpha2</version>
        </dependency>


      </dependencies>

      <properties>
        <java.version>1.8</java.version>
      </properties>


    </project>

有什么想法吗?

谢谢

共有1个答案

伍溪叠
2023-03-14

我看不到dataSource和TransactionManager。我总是将hibernate配置移动到整个applicationcontex.xml文件下面的applicationcontext.xml中,例如:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" 
xmlns:task="http://www.springframework.org/schema/task"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
        http://www.springframework.org/schema/util
        http://www.springframework.org/schema/util/spring-util-4.3.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.3.xsd">

<context:component-scan base-package="your_package_root_of_beans" />
<context:annotation-config />
<aop:aspectj-autoproxy />

<!-- dataSource properies -->
<context:property-placeholder location="classpath:context/dataSource.properties" />

<!-- hibernate -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="${hibernate.driverClassName}" />
    <property name="url" value="${hibernate.url}" />
    <property name="username" value="${hibernate.username}" />
    <property name="password" value="${hibernate.password}" />
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="packagesToScan" value="your_package_root_of_entities" />
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">${hibernate.dialect}</prop>
            <prop key="hibernate.connection.autocommit">false</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
        </props>
    </property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:annotation-driven proxy-target-class="true" transaction-manager="transactionManager" />

您需要设置为变量:context:component-scan base-package-package root,用于所有spring bean;property name=“packageStoscan”-package root,用于所有数据库实体。此文件在属性文件中包含rest参数:datasource.properties以下示例:

hibernate.driverClassName=org.postgresql.Driver
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
hibernate.url=jdbc:postgresql://localhost:5432/dataBaseName
hibernate.username=postgres
hibernate.password=postgres
hibernate.hbm2ddl.auto=

    
 类似资料:
  • 我使用以下类型生成Web服务响应类: 它生成一个具有保护长删除的类; 但是我想生成一个数组。添加minOccurs="0"maxOccurs="unbed"会生成List。 请帮忙。

  • 问题内容: 我想从数据库生成JPA (但我希望它是面向对象的)。例如 如果它还支持ManyToOne,OneToMany,Parent和ManyToMany,那将很酷。 PS我尝试了JBoss工具(hibernate工具),但没有为我工作。 问题答案: 使用JBoss工具(以前是hibernate工具)。 从他们的网站报价: 逆向工程:Hibernate Tools最强大的功能是数据库逆向工程工具

  • 我正在寻找一种从数据库值生成类的方法,以便使用可用的最新值提供更新的生成器类。用例如下: 有一张像这样的桌子 我希望生成一个可以像这样使用的生成器类 目标是能够在将值添加到数据库表时(使用Liquibase)生成更新的生成器类。有人知道有哪些库可以帮助实现这一点,或者有什么从头开始实现这一点的策略吗?我们的项目大多是Java 11,带有Groovy和Spring Boot。

  • 问题内容: 我想从numpy中的2D数组创建“心率监视器”效果,并希望音调能够反映数组中的值。 问题答案: 您可以使用from函数来创建一个wav文件,然后您可以根据需要播放该文件。请注意,数组必须是整数,因此,如果您有浮点数,则可能需要适当地缩放它们: 如果您希望Python实际播放音频,则此页面概述了某些软件包/模块。

  • 有没有什么方法可以从wsdl生成xsd。任何链接或工具也可以。最简单的方法是什么?

  • 问题内容: 我正在使用hibernate创建一个jar。我曾经遇到过一个情况我需要更改设置(URL)的时候,所以我想加载这样 但是然后运行该项目,我得到这个异常 如何从课程路径以外的其他位置加载? 问题答案: 上课有方法 请尝试以下操作,它应该可以正常工作:) 不同之处在于您使用了一种方法,该方法期望类路径中的资源,但是所期望的却在其中,因此您可以传递它。