Java Hibernate-spring集成
Hibernate版本--4.3.5.Final 弹簧版本--4.0.3.0发布 我正在尝试使用HibernateSpring在DB中保存对象 在Main类()中——我已经创建了上下文并传递给EditContainer类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
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)