Java UnsupportedOperationException:应用程序必须提供JDBC连接JPA Hibernate Spring JDBC

Java UnsupportedOperationException:应用程序必须提供JDBC连接JPA Hibernate Spring JDBC,java,spring,hibernate,jpa,jdbc,Java,Spring,Hibernate,Jpa,Jdbc,当我尝试开始交易时 entityManager.getTransaction().begin(); 抽象地说,我得到了 java.lang.UnsupportedOperationException: The application must supply JDBC connections My persistence.xml <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="

当我尝试开始交易时

entityManager.getTransaction().begin();
抽象地说,我得到了

java.lang.UnsupportedOperationException: The application must supply JDBC connections
My persistence.xml

<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="pu" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
        <property name="hibernate.hbm2ddl.auto" value = "create-drop"/>
    </properties>
</persistence-unit>
</persistence>
EntityManagerFactory bean:

    @Bean
public EntityManagerFactory entityManagerFactory(){
    EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("pu");
    return entityManagerFactory;
}
EntityManager bean:

@Bean
public EntityManager entityManager(){
    return entityManagerFactory.createEntityManager();
}
在hibernate中,您的属性名称看起来不正确。应该是,

"hibernate.connection.driver_class" for JDBC driver class
"hibernate.connection.url" for JDBC URL
"hibernate.connection.username" for database user
"hibernate.connection.password" for database user password

请更正您的财产名称

如果您使用的是使用hibernate模板的spring orm,那么您需要提供如下配置。 我们使用hibernate entitymanager for hibernate作为JPA实现。hibernate entitymanager依赖于hibernate core,因此我们不必显式地将hibernate core放在pom.xml中。它通过maven可传递依赖关系被引入到我们的项目中

在spring.xml中

<beans xmlns=.....>
<context:component-scan base-package="com.town.practice" />
<context:annotation-config />
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="org.hsqldb.jdbcDriver" />
        <property name="url" value="jdbc:hsqldb:mem://productDb" />
        <property name="username" value="sa" />
        <property name="password" value="" />
    </bean>

    <bean id="entityManagerFactory" 
            class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
            p:packagesToScan="com.town.practice.model"
            p:dataSource-ref="dataSource"
            >
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <property name="generateDdl" value="true" />
                <property name="showSql" value="true" />
            </bean>
        </property>
    </bean>

    <!-- Transactions -->
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>
    <!-- enable the configuration of transactional behavior based on annotations -->
    <tx:annotation-driven transaction-manager="transactionManager" />

</beans>

<beans xmlns=.....>
<context:component-scan base-package="com.town.practice" />
<context:annotation-config />
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="org.hsqldb.jdbcDriver" />
        <property name="url" value="jdbc:hsqldb:mem://productDb" />
        <property name="username" value="sa" />
        <property name="password" value="" />
    </bean>

    <bean id="entityManagerFactory" 
            class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
            p:packagesToScan="com.town.practice.model"
            p:dataSource-ref="dataSource"
            >
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <property name="generateDdl" value="true" />
                <property name="showSql" value="true" />
            </bean>
        </property>
    </bean>

    <!-- Transactions -->
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>
    <!-- enable the configuration of transactional behavior based on annotations -->
    <tx:annotation-driven transaction-manager="transactionManager" />

</beans>