spring data jpa + spring mvc的事务控制问题 50

问题大概是这样的,如下@Transactionalpublicvoidsave(Aa){a=aRepository.save(a);Bb=newB();b.setAId(... 问题大概是这样的,如下
@Transactional
public void save(A a){
a = aRepository.save(a);

B b = new B();

b.setAId(a.getId());

bRepository.save(b);

}
这样是获取不到a对象的id的,因为方法没有执行完,这个事务没有提交,数据没有更新到数据库,请问如果我想在save之后通过返回的对象就能拿到主键需要怎么做,事务是肯定需要这么配置的,那我应该怎么办呢?
spring配置如下:
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
<context:annotation-config/>
<context:load-time-weaver weaver-class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"/>
<context:component-scan base-package="org.reststackteam.reststack"/>
<jpa:repositories base-package="org.reststackteam.reststack.repositories"/>
展开
 我来答
cylazhm
2014-11-27 · TA获得超过195个赞
知道小有建树答主
回答量:136
采纳率:0%
帮助的人:76万
展开全部
为什么这么做?怎么不用OneToOne, cascadeType=All来做?这样只需要b.setA(A),bRepository.save(b)就好了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f77eb01
2014-11-19 · TA获得超过407个赞
知道小有建树答主
回答量:615
采纳率:100%
帮助的人:416万
展开全部
用spring的事务模板可以手动控制事务提交,这样你就能拿到a的id了。
追问
这个问题我解决了,虽然不是手动控制事务的提交,不过到也差不多,只需要让Repository接口集成JpaRepository就可以了,里面有flush方法,可以刷新缓存,而且支持自动回滚事务
这个问题我解决了,虽然不是手动控制事务的提交,不过到也差不多,只需要让Repository接口集成JpaRepository就可以了,里面有flush方法,可以刷新缓存,而且支持自动回滚事务
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式