☰
Current Page
Main Menu
Home
Home
Editing
手动控制嵌套事务
Edit
Preview
h1
h2
h3
default
Set your preferred keybinding
default
vim
emacs
txt
Set this page's format to
AsciiDoc
Creole
Markdown
MediaWiki
Org-mode
Plain Text
RDoc
Textile
Rendering unavailable for
BibTeX
Pod
reStructuredText
Help 1
Help 1
Help 1
Help 2
Help 3
Help 4
Help 5
Help 6
Help 7
Help 8
Autosaved text is available. Click the button to restore it.
Restore Text
1.目前只支持手动控制嵌套事务 2.事务控制由上下文BaseContextHandler中的mata控制 (1) //获取meta Meta meta = BaseContextHandler.getMeta(); (2) //新建一个事务点,oracle事务点名称规则有限制可以使用String point1 = "SP"+IdGenerator.nextId(); String point1 = UUID.randomUUID().toString(); (3) //子事务的回滚或者提交,如不主动提交则跟随后续meta.commit一起提交 try { //在设置savepoint之前将事务提交模式设置成手动提交 meta.getRelationDBAccessor().setAutoCommit(false); //设置事务点 meta.setSavepoint(point1); validates(v); //执行成功,直接commit(会提交整个point及之前的代码事务) meta.commit(); }catch (Exception e){ //失败,可以回滚当前事务点的代码 meta.rollback(point1); } (4)可运行demo: public RecordSet create(List<Map<String, Object>> valuesList) throws SQLException { //获取meta Meta meta = BaseContextHandler.getMeta(); List<Map<String, Object>> v = new ArrayList<>(); Map<String,Object> m = valuesList.get(0); m.remove("upload_field_images"); v.add(m); RecordSet rs = (RecordSet) this.getMeta().get("TestUser").callSuper(TestUser.class,"create",v); //新建一个事务点,oracle事务点名称规则有限制可以使用String point1 = "SP"+IdGenerator.nextId(); String point1 = UUID.randomUUID().toString(); try { meta.getRelationDBAccessor().setAutoCommit(false); meta.setSavepoint(point1); validates(v); //执行成功,直接commit(会提交整个point及之前的代码事务) meta.commit(); }catch (Exception e){ //失败,可以回滚当前事务点的代码,不影响其他代码事务执行 meta.rollback(point1); } //commit事务后,后续操作会开启新事务 meta.commit(); if(StringUtils.isBlank((String) valuesList.get(0).get("phone"))){ throw new RuntimeException("手机号码不能为空。。。。"); } rs = (RecordSet) this.getMeta().get("TestUser").callSuper(TestUser.class,"create",v); return rs; } public void validates(List<Map<String, Object>> valuesList){ if(StringUtils.isBlank((String) valuesList.get(0).get("phone"))){ throw new RuntimeException("手机号码不能为空。。。。"); } this.getMeta().get("TestUser").callSuper(TestUser.class,"create",valuesList); }
Uploading file...
Sidebar
[[_TOC_]]
Edit message:
Cancel