java和sql問題

goodlucktomyself 2010-12-28 06:47:20
(1) 頁面數據顯示如下:
id 部門代號 簽合順序
10 03 1
11 03 2
12 03 3
13 03 4
14 03 5
15 03 6
上面每一行是一個對象,數據顯示方面都做出來了;現在需求就是這六行的每一行位置可以隨意,如其中一種:
(2) id 部門代號 簽合順序
15 03 6
11 03 2
12 03 3
13 03 4
14 03 5
10 03 1
現在位置變更也實現了,還有變更后的順序也能獲取.然后因為行位置變化了,所以得重新將"簽合順序"按變更后的順序更新到數據庫里.最后效果就是:

(2) id 部門代號 簽合順序
15 03 1
11 03 2
12 03 3
13 03 4
14 03 5
10 03 6


數據庫表:
fee_flow_user(id number,branch_no varchar2,flow_user number,chk_seq int)
id:主鍵 branch_no:部門代號 chk_seq:簽合順序,而且branch_no和chk_seq兩個合起來有唯一性約束
我開始是這樣實現的:
int seq = 0;
for(UserFeeFlowDTO userFeeFlowDTO : dtos) { //dtos是封裝行變更后的一個集合
FeeFlowUser flowUser = flowDAO.findByPK(userFeeFlowDTO.getId()); //FeeFlowUser映射表fee_flow_user
flowUser.setChkSeq(++seq);
flowDAO.update(flowUser);
}
DAOFactory.getDAOFactory().commit();
這樣做會報唯一性約束錯誤...所以請大家看下有什么良策?也不知道是否描述清楚了?
小弟在此先感謝...
...全文
141 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
super_thinker 2010-12-29
  • 打赏
  • 举报
回复
我觉的这样可行
[Quote=引用 2 楼 magong 的回复:]
可以如1楼所说,删掉全部相关记录重新save。
如果嫌麻烦,
可以将“签合次序”先暂时改为绝对不可能冲突的值,比方说-1 -2 -3...
然后再次更新,取反为正确的1 2 3...
[/Quote]

就是重新排序嘛 一页的数据 不会很多把 可以全部删掉重新加 也可以如上所说
reggiekiller 2010-12-29
  • 打赏
  • 举报
回复
打卡用的?
jsnewland 2010-12-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 rain_man_happy 的回复:]
先删掉对应的,再更新。
[/Quote]

+1
magong 2010-12-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 goodlucktomyself 的回复:]

如果数据比较多呢,这样会不会影响性能,执行速度会比较慢???
[/Quote]
就是考虑性能问题,这样做比删掉重save要快得多。

用SQL的话,
update ..set 簽合順序=-簽合順序
一条指令就OK了
zn85600301 2010-12-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 goodlucktomyself 的回复:]

引用 2 楼 magong 的回复:

可以如1楼所说,删掉全部相关记录重新save。
如果嫌麻烦,
可以将“签合次序”先暂时改为绝对不可能冲突的值,比方说-1 -2 -3...
然后再次更新,取反为正确的1 2 3...

如果数据比较多呢,这样会不会影响性能,执行速度会比较慢???
[/Quote]
这样其实不如 先删除 后添加 来的简单快速
goodlucktomyself 2010-12-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 magong 的回复:]

可以如1楼所说,删掉全部相关记录重新save。
如果嫌麻烦,
可以将“签合次序”先暂时改为绝对不可能冲突的值,比方说-1 -2 -3...
然后再次更新,取反为正确的1 2 3...
[/Quote]
如果数据比较多呢,这样会不会影响性能,执行速度会比较慢???
风影萧诺 2010-12-28
  • 打赏
  • 举报
回复
怎么还整个繁体。。。。
magong 2010-12-28
  • 打赏
  • 举报
回复
可以如1楼所说,删掉全部相关记录重新save。
如果嫌麻烦,
可以将“签合次序”先暂时改为绝对不可能冲突的值,比方说-1 -2 -3...
然后再次更新,取反为正确的1 2 3...
rain_man_happy 2010-12-28
  • 打赏
  • 举报
回复
先删掉对应的,再更新。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧