Java Hibernate-spring集成

Java Hibernate-spring集成,java,spring,hibernate,Java,Spring,Hibernate,Hibernate版本--4.3.5.Final 弹簧版本--4.0.3.0发布 我正在尝试使用HibernateSpring在DB中保存对象 在Main类()中——我已经创建了上下文并传递给EditContainer类 try(ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml")) { Main window = n

Hibernate版本--4.3.5.Final 弹簧版本--4.0.3.0发布 我正在尝试使用HibernateSpring在DB中保存对象

在Main类()中——我已经创建了上下文并传递给EditContainer类

   try(ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml")) {
                        Main window = new Main();
                        MenuPanel menuPanel = new MenuPanel(window);
                        window.panel.add(menuPanel, MenuPanel.class.getName());
                    EditContainer customerContainer = new EditContainer(new EditCustomer(),
                            window, context);
在EditContainer类中,我已经调用了。初始化服务后在此保存()方法

services = context.getBean(Services.class);
currentObject = services.save(currentObject, objectType);
服务类--

Spring.xml---


com.dev.frontend.model.Customer
org.hibernate.dialogue.mysqldialogue
线
真的
我看到以下例外情况:

 org.hibernate.service.UnknownServiceException: Unknown service requested [org.hibernate.engine.jdbc.connections.spi.ConnectionProvider]
        at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:201)
        at org.hibernate.internal.AbstractSessionImpl.getJdbcConnectionAccess(AbstractSessionImpl.java:341)
        at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.<init>(JdbcCoordinatorImpl.java:114)
org.hibernate.service.UnknownServiceException:请求的未知服务[org.hibernate.engine.jdbc.connections.spi.ConnectionProvider]
位于org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:201)
位于org.hibernate.internal.AbstractSessionImpl.getJdbcConnectionAccess(AbstractSessionImpl.java:341)
位于org.hibernate.engine.jdbc.internal.jdbcoordinatorimpl.(jdbcoordinatorimpl.java:114)

这可能是由于交易而产生的问题。可以尝试在save()的方法顶部添加@Transaction注释,并检查它是否有帮助。不要自己处理事务。否。同样的错误。我变了@事务性公共对象保存(Object Object,int objectType){switch(objectType){case TYPE_CUSTOMER:Session Session=sessionFactory.openSession();Session.persist(Object);Session.close();break;}返回null;}请提供您的spring.xml。在使用spring和spring管理的事务时,除非您使用的是JTA,否则不要乱用hibernate.current_session_context_类属性。另外,请仔细检查您是否正在关闭applicationContext。此外,上下文只应在应用程序中创建一次。请尝试从数据源bean中删除destroy方法。@user2806992使用
事务性
注释标记您的服务类,并添加TX:annotation config。删除dao中的事务逻辑。
<?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:aop="http://www.springframework.org/schema/aop"
    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/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">

         <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
            destroy-method="close">
            <property name="driverClassName" value="com.mysql.jdbc.Driver" />
            <property name="url" value="jdbc:mysql://localhost:3306/TestDB" />
            <property name="username" value="root" />
            <property name="password" value="root" />
        </bean>


    <!-- Hibernate 4 SessionFactory Bean definition -->
    <bean id="hibernate4AnnotatedSessionFactory"
            class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
            <property name="dataSource" ref="dataSource" />
            <property name="annotatedClasses">
                <list>
                    <value>com.dev.frontend.model.Customer</value>
                </list>
            </property>
            <property name="hibernateProperties">
                <props>
                    <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                    <prop key="hibernate.current_session_context_class">thread</prop>
                    <prop key="hibernate.show_sql">true</prop>
                </props>
            </property>
        </bean>


    <bean id="services" class="com.ashu.services.Services">
            <property name="sessionFactory" ref="hibernate4AnnotatedSessionFactory" />
    </bean>
</beans>
 org.hibernate.service.UnknownServiceException: Unknown service requested [org.hibernate.engine.jdbc.connections.spi.ConnectionProvider]
        at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:201)
        at org.hibernate.internal.AbstractSessionImpl.getJdbcConnectionAccess(AbstractSessionImpl.java:341)
        at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.<init>(JdbcCoordinatorImpl.java:114)