框架版本:
Spring 3.1.1
Hibernate 4.1.2
HSQLDB 1.8.0.10
数据库:
HSQLDB主要是使用内存的模式,测试的表只有TEST_MODEL,这个表是从实体映射创建的表。
问题描述:
-------------------------------------------------------------------------------------------------------
执行保存对象操作没有报错,但是执行hql查询或get操作时,却查询不回对象。
具体代码:
-------------------------------------------------------------------------------------------------------
测试第一步:
执行保存数据操作,代码如下:
DAO层:
执行代码“sessionFactory.getCurrentSession().save(testModel));”,能正常执行并生成主键ID,ID生成策略是用uuid。
Service层:
“testDao.saveTestModel(testModel);”,直接调用dao层的保存方法,返回对象ID。
Controller层:
@RequestMapping(params = "method=doSaveTestModel")
public String doSaveTestModel(HttpServletRequest req) {
req.getSession().setAttribute("testId", testService.saveTestModel(new TestModel("test", new Date())));
System.out.println("save success!");
return "test/test";
}
为了方便后面的测试,我把对象ID存入session里。
测试第二步
执行DAO层的更新操作,代码如下:
Controller层:
@RequestMapping(params = "method=doUpdateTestModel")
public String doUpdateTestModel(HttpServletRequest req) {
// 按ID查询对象
List<TestModel> testModelList = testService.queryTestModel(
req.getSession().getAttribute("testId").toString());
if (testModelList.size() > 0) {
TestModel testModel = testModelList.get(0);
testModel.setName("Vincent");
// 执行更新操作
testService.updateTestModel(testModel);
System.out.println("update success!");
}
return "test/test";
}
Service层:
public void updateTestModel(TestModel testModel) {
testDao.updateTestModel(testModel);
}
DAO层:
public void updateTestModel(TestModel testModel) {
System.out.println(sessionFactory.getCurrentSession().merge(testModel));
}
经过上述操作,发现无法进入红色字体的代码体,也就是说查询不到数据。
以下为关键部分的配置文件:
Spring:
<!-- 数据源配置 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${hsqldb.driverClassName}" />
<property name="jdbcUrl" value="${hsqldb.url}" />
<property name="user" value="${hsqldb.username}" />
<property name="password" value="${hsqldb.password}" />
<property name="initialPoolSize" value="${c3p0.initialPoolSize}" />
<property name="minPoolSize" value="${c3p0.minPoolSize}" />
<property name="maxPoolSize" value="${c3p0.maxPoolSize}" />
<property name="maxStatements" value="${c3p0.maxStatements}" />
</bean>
<!-- Hibernate SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mappingResources">
<list>
<value>hibernate/TestModel.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.cache.provider_class">${hibernate.cache.provider_class}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
<prop key="hibernate.cache.use_query_cache">${hibernate.cache.use_query_cache}</prop>
<prop key="hibernate.cache.region.factory_class">${hibernate.cache.region.factory_class}</prop>
<prop key="hibernate.current_session_context_class">${hibernate.current_session_context_class}</prop>
<prop key="jdbc.use_scrollable_resultset">${jdbc.use_scrollable_resultset}</prop>
</props>
</property>
</bean>
<bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager" >
<property name="sessionFactory"><ref bean="sessionFactory"/></property>
</bean>
<!-- 事务配置 -->
<tx:advice id="userTxAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="delete*" propagation="REQUIRED" read-only="false"
rollback-for="java.lang.Exception" />
<tx:method name="insert*" propagation="REQUIRED" read-only="false"
rollback-for="java.lang.Exception" />
<tx:method name="save" propagation="REQUIRED" read-only="false"
rollback-for="java.lang.Exception" />
<tx:method name="update*" propagation="REQUIRED" read-only="false"
rollback-for="java.lang.Exception" />
<tx:method name="create*" propagation="REQUIRED" read-only="false"
rollback-for="java.lang.Exception" />
<tx:method name="modify*" propagation="REQUIRED" read-only="false"
rollback-for="java.lang.Exception" />
<tx:method name="find*" propagation="SUPPORTS" read-only="true" />
<tx:method name="get*" propagation="SUPPORTS" read-only="true" />
<tx:method name="select*" propagation="SUPPORTS" read-only="true" />
<tx:method name="query*" propagation="SUPPORTS" read-only="true" />
<tx:method name="load*" propagation="SUPPORTS" read-only="true" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="pc"
expression="execution(public * net.bingosoft.services.*.*(..))" />
<aop:advisor pointcut-ref="pc" advice-ref="userTxAdvice" />
</aop:config>
Hibernate4:
<hibernate-mapping>
<class name="net.bingosoft.model.TestModel" table="TEST_MODEL" lazy="false">
<id name="id" type="java.lang.String" >
<column name="ID" />
<generator class="uuid" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" />
</property>
<property name="lastTime" type="java.util.Date">
<column name="LAST_TIME" />
</property>
</class>
</hibernate-mapping>
Web.xml:
<!-- OperSessionInViewFilter -->
<filter>
<filter-name>OpenSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>OpenSessionInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
求协助,等待中,谢谢.....
附件中是完整的项目,使用maven管理jar包。
分享到:
相关推荐
博文链接:https://xuliangyong.iteye.com/blog/79089
与spring 结合hibernate关系映射(父子,组合),事务,延迟加载。采用maven测试,hsqldb
本书是使用Eclipse逐步介绍Hibernate,Spring,HSQL和Maven的指南,其中包含4个有关流行框架的教程。
平台依赖度低的解决方案 ...测试环境:equinox3.5.2。其它用到的Bundle包括hibernate、hibernate-annotation、hsqldb、 spring、spring-osgi等。请到http://www.springsource.com/repository/下载。
Spring冒险足球经理Spring MVC、Hibernate、JPA、Hsqldb 入门
#Test Spring REST + Hibernate 功能 应用程序允许调用 REST 服务(HTTP / JSON) 实现是 Spring REST + Hibernate,并使用 Spring Boot 进行集成 允许您查阅在内存数据库中创建的项目列表 HSQLDB 项目是在启动应用...
服务带有 Rest 和 SOAP Web 服务、JMS(ActiveMQ)、JPA、Hibernate 和 HSQLDB 的 Spring Web 应用程序该项目公开了两个 rest API 和三个 SOAP API REST API a) public String push(int i1, intI2) - 将整数作为消息推...
CSS JSF HIBERNATE SPRING STRUTS TOPLINK ADF EJB 3.O AJAX JavaScript 或者一些其它的小的要用到的软件 喜欢的话经常到我空间上来下,我也是收藏方便以后用 只有交流才会有进步 本人BLOG ...
spring-framework-3.0.5.RELEASE-dependencies 好不容易找到了,赶紧分享一下 因为不能大于20M,共分了8个包,都是独立的,我列了目录,可以只下载需要的包,这是1号包: 1号包: edu.emory.mathcs.backport edu.oswego.cs....
Spring Security 4.0.0.M2(带有新的 spring-security-test 模块) Spring数据 JPA 1.7 JPA 2.1 Hibernate 4.3 支持嵌入式数据库:HSQLDB (TEST, DEV) 支持服务器数据库:HSQLDB(服务器模式)、MYSQL 5.6...
spring-framework-3.0.5.RELEASE-dependencies 好不容易找到了,赶紧分享一下 因为不能大于20M,共分了8个包,都是独立的,我列了目录, 可以只下载需要的包,这是6号包: 1号包: edu.emory.mathcs.backport edu.oswego....
spring-framework-3.0.5.RELEASE-dependencies 好不容易找到了,赶紧分享一下 因为不能大于20M,共分了8个包,都是独立的,我列了目录, 可以只下载需要的包,这是7号包: 1号包: edu.emory.mathcs.backport edu.oswego....
spring-framework-3.0.5.RELEASE-dependencies 好不容易找到了,赶紧分享一下 因为不能大于20M,共分了8个包,都是独立的,我列了目录, 可以只下载需要的包,这是5号包: 1号包: edu.emory.mathcs.backport edu.oswego....
spring-framework-3.0.5.RELEASE-dependencies 好不容易找到了,赶紧分享一下 因为不能大于20M,共分了8个包,都是独立的,我列了目录, 可以只下载需要的包,这是4号包: 1号包: edu.emory.mathcs.backport edu.oswego....
spring-framework-3.0.5.RELEASE-dependencies 好不容易找到了,赶紧分享一下 因为不能大于20M,共分了8个包,都是独立的,我列了目录, 可以只下载需要的包,这是8号包: 1号包: edu.emory.mathcs.backport edu.oswego.cs...
spring-framework-3.0.5.RELEASE-dependencies 好不容易找到了,赶紧分享一下 因为不能大于20M,共分了8个包,都是独立的,我列了目录, 可以只下载需要的包,这是3号包: 1号包: edu.emory.mathcs.backport edu.oswego.cs...
正则表达式 lucene索引合并 探查Weblogic JDBC Multipool 问题 struts通用Exception处理 Grails中默认数据库HSQLDB点滴 从request获取各种路径总结 DIV实现的表格自动伸张与收缩 java 邮件...
spring-framework-3.0.5.RELEASE-dependencies 好不容易找到了,赶紧分享一下 因为不能大于20M,共分了8个包,都是独立的,我列了目录, 可以只下载需要的包,这是2号包: 1号包: edu.emory.mathcs.backport edu.oswego....