发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 大数据 扩展性 并发编程 事件驱动 分布式 SOA

使用jdbcTemplate查询不到刚刚插入的记录?

    
2008-06-20 16:23
赞助商链接

如题,本人使用Spring提供的AbstractTransactionalDataSourceSpringContextTests对服务层进行集成测试

测试的目的是向数据库插入一条记录,然后立即检索出来。下面是我的测试代码:


public void testSaveUser() {
User newUser = createUser();
try {
userService.saveUser(newUser);
assertTrue(true);
//setComplete();
String sql =
"Select USERNAME from NEWSLETTER_USER where UPPER(USERNAME)= ?";
String userName = (String) jdbcTemplate.queryForObject(sql,
new Object[] {
"PAUL" }, java.lang.String.class);
assertNotNull(userName);
assertEquals(userName, newUser.getUserName());
} catch (NewsletterException ne) {
fail(ne.getMessage());
}
}


请注意该方法里面的setComplete()方法,一开始我并没有提交事务,于是出现了saveUser执行成功,但jdbcTemplate.queryForObject执行时查询不到记录,导致assertNotNull(userName)处失败。

后来我把setComplete()处的注释去掉,再次测试。发现数据库中已经有了一条记录,将SQL语句拷贝到数据库中执行可以返回正确的结果,但使用jdbcTemplate查询依然失败,同样提示查询不到记录。

请问这是为什么?为什么在提交后还查不到数据?

2008-06-23 11:16

事务没有完成,关闭事务取决你使用什么事务如jdbc/jTA

2008-06-23 13:56

我采用的是jdbc的事务,Spring中配置如下:


<!-- User Service Definition -->
<bean id="userServiceTarget"
class=
"com.newsletter.service.impl.UserServiceImpl">
<property name=
"userDao">
<ref local=
"userDao" />
</property>
<property name=
"systemMessage">
<ref local=
"systemMessage" />
</property>
</bean>

<!-- Transactional proxy for the User Service -->
<bean id=
"userService"
class=
"org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name=
"transactionManager">
<ref local=
"transactionManager" />
</property>
<property name=
"target">
<ref local=
"userServiceTarget" />
</property>
<property name=
"transactionAttributes">
<props>
<prop key=
"get*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key=
"save*">PROPAGATION_REQUIRED</prop>
<prop key=
"update*">PROPAGATION_REQUIRED</prop>
<prop key=
"delete*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>


另你提到事务没有完成,为什么这样说呢?难道不是在我调用setComplete()时事务就已经提交了吗?请指教

JdonFramework     

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com