Person C
2012-06-21 23:05
浏览 466
已采纳

spring data jpa 的一些疑问

http://www.ibm.com/developerworks/cn/opensource/os-cn-spring-jpa/
《使用 Spring Data JPA 简化 JPA 开发》这篇文章相信大家一定拜读过
  但是这2天我在继续试用spring data jpa中遇到了不少挫折。
  首先遇到的是原文中写到“默认情况下,Spring Data JPA 实现的方法都是使用事务的。针对查询类型的方法,其等价于 @Transactional(readOnly=true);增删改类型的方法,等价于 @Transactional。可以看出,除了将查询的方法设为只读事务外,其他事务属性均采用默认值。”但是我配置了很长一段时间,发现dao这一层没用上@Transactional注解,而在service层用上@Transactional,JPA会发出SQL语句,但是不会存储到数据库,数据被回滚了。
  第二,原文中还提到“与继承 Repository 等价的一种方式,就是在持久层接口上使用 @RepositoryDefinition 注解,并为其指定 domainClass 和 idClass 属性。”两种等价的继承接口方式示例

[code="java"] public interface UserDao extends Repository { …… }
@RepositoryDefinition(domainClass = AccountInfo.class, idClass = Long.class)
public interface UserDao { …… } [/code]
我搞了半天就是报错
[code="java"]java.lang.ClassCastException: $Proxy23 cannot be cast to org.springframework.data.repository.Repository[/code]

网上查了很多资料,包括官方文档,都没提及这种错误的原因,我反复对照配置文件,实在找不出错误所在,不知谁能解答下疑惑。使用的是spring3.1.1,hibernate4,spring data jpa 1.03
  

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 爱上一条鱼 2012-06-22 10:39
    已采纳

    对于第一个问题:
    这个注释@Transactional没有开启事务的功能,只是说明这个类包含了具有事务特性的元数据。。。开启事务是在配置中通过开启。。。。

    第二个问题貌似是等价的,你用直接继承没问题的么?或者用注释的时候类型没对好。。。

    点赞 评论
  • qiannideshou123 2012-06-22 15:21

    这个注释@Transactional没有开启事务的功能说明这个类包含了具有事务特性的元数据 开启事务是在配置中通过开启
    这个注释@Transactional没有开启事务的功能说明这个类包含了具有事务特性的元数据 开启事务是在配置中通过开启9.
    孕妇不能吃哪些食物www.yunmama.org fujsd 医疗器械www.xyhbuy.com rfdse 天然水晶www.shuijing100.com dijfu 石家庄办网证www.shijiazhang288.com 内分泌失调怎么调理http://news.163.com/12/0418/11/7VCC1ER300014AEE.html 澳门赌 场www.duanguihai.com feitian

    点赞 评论

相关推荐 更多相似问题