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

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没有开启事务的功能,只是说明这个类包含了具有事务特性的元数据。。。开启事务是在配置中通过开启。。。。

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办