Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring java.lang.UnsupportedOperationException:用户必须提供JDBC连接_Spring_Hibernate_Jdbc_Jpa 2.0 - Fatal编程技术网

Spring java.lang.UnsupportedOperationException:用户必须提供JDBC连接

Spring java.lang.UnsupportedOperationException:用户必须提供JDBC连接,spring,hibernate,jdbc,jpa-2.0,Spring,Hibernate,Jdbc,Jpa 2.0,我得到了这个异常,但我无法找出我的配置有什么问题 我正在发布相关文件,感谢您的帮助 我正在使用 弹簧3.1.0.1释放 hibernate entitymanager 3.6.10.Final(应与JPA2一起使用) 正在尝试从JUnit文件运行代码 package com.successcharging.core.dao.jpa; import junit.framework.Assert; import org.junit.Before; import org.junit.Test; i

我得到了这个异常,但我无法找出我的配置有什么问题 我正在发布相关文件,感谢您的帮助
我正在使用 弹簧3.1.0.1释放 hibernate entitymanager 3.6.10.Final(应与JPA2一起使用)

正在尝试从JUnit文件运行代码

package com.successcharging.core.dao.jpa;

import junit.framework.Assert;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;

import com.successcharging.core.security.dao.UserDao;
import com.successcharging.core.security.model.User;
import com.successcharging.core.security.model.UserImp;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {
    "classpath:applicationContext/applicationContext*.xml"})
@TransactionConfiguration(transactionManager="transactionManager", defaultRollback=true)
@Transactional
public class UserDaoImplTest {

private static final boolean ENABLED = true;

private static final String PASSWORD = "password";

private static final String USERNAME = "joe.bloggs";

@Autowired
private UserDao userDao;
private User user;
@Before
public void before() {
    user = new UserImp();
    user.setName(USERNAME);
    user.setPassword(PASSWORD);
    user.setEnabled(ENABLED);

    userDao.save(user);
}

@Test
public void findByUserName() {
    Assert.assertNotNull(user);
    User user2 = userDao.findById(user.getId());

    Assert.assertNotNull(user2);
    Assert.assertEquals(USERNAME, user2.getName());
}
}
applicationContext.xml

applicationContext-persistence.xml

persistence.xml


我发现了一个问题,我必须将数据源添加到persistenceUnitManager,类似这样


我遇到了类似的问题,但在我的案例中没有使用datasource。通过添加hibernate键,并在persistence.xml文件中提供数据库详细信息,问题得到了解决。请注意,Hibernate3.x和4.x的语法如下所述(在将Hibernate4.x降级为3.x时点击此按钮)

更改如下(Hibernate 4.x语法):


使用(Hibernate 3.x语法):



我发现了一个问题,我必须将数据源添加到persistenceUnitManager,类似这样的东西,将此作为答案并接受它;这对于具有相同问题的其他用户来说更容易。
<?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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config/>
<context:component-scan base-package="com.successcharging.core" />
</beans>
 <?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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

<bean id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="packagesToScan" value="com.successcharging.core" />

    <property name="jpaDialect">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
    </property>
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="showSql" value="true" />
            <property name="generateDdl" value="true" />
            <property name="databasePlatform" value="org.hibernate.dialect.MySQLInnoDBDialect" />
        </bean>
    </property>
    <property name="persistenceUnitName" value="successcharging.core.security" />
    <property name="persistenceUnitManager">
        <bean
            class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager" />
    </property>
</bean> 

<bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://192.168.1.129:3306/SC_SECURITY" />
    <property name="username" value="sc_admin" />
    <property name="password" value="123" />
</bean>

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

<tx:annotation-driven />


</beans>
<?xml version="1.0" encoding="UTF-8" ?>

<persistence version="1.0"
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_1_0.xsd">

<persistence-unit name="successcharging.core.security"
    transaction-type="RESOURCE_LOCAL">
    <properties>
        <property name="cache.provider_class" value="org.hibernate.cache.NoCacheProvider" />
        <property name="hibernate.max_fetch_depth" value="3" />
        <property name="hibernate.query.factory_class"
            value="org.hibernate.hql.classic.ClassicQueryTranslatorFactory" />
        <property name="hibernate.query.substitutions" value="true 1, false 0" />
    </properties>
</persistence-unit>
<properties>
      <property name="javax.persistence.jdbc.driver" value="..."/>
      <property name="javax.persistence.jdbc.url" value="..."/>
      <property name="javax.persistence.jdbc.user" value="..."/>
      <property name="javax.persistence.jdbc.password" value="..."/>
 </properties>
<properties>
      <property name="hibernate.connection.driver_class" value="..."/>
      <property name="hibernate.connection.url" value="..."/>
      <property name="hibernate.connection.username" value="..."/>
      <property name="hibernate.connection.password" value="..."/>
  </properties>