多人同时注册出现记录相同的问题 如果有多个人同时注册(同一个时间点。精确到秒),那么在这个时间点上的记录会出现相同的记录,在注册的Action有一个成员变量来接收JSP页面传递来的注册信息,但是在向数据库提交之前都已验证过该记录是否已存在,可是现在数据库中还是有相同的数据,这个有几方面原因,求大神相助! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 后台注册的那个service的方法需要同步 你是指的ID相同吧。同一时间注册。你的ID取的当前时间所以导致ID相同吧。你校验没用的原因应该是因为相同的数据是在你校验完以后加入的。你可以在每个用户注册完成后。让系统等待几毫秒再插下一个用户Thread.sleep(20); 同时注册时最好这个方法是synchronized让后来的先排队。 这个也许可行。我这里没有用到线程,也可以Thread.sleep(20);吗? 什么叫做:相同的记录?哪些东西相同了?不能在数据库中设置 Unique Index 么? 你的验证,单线程情况下是可以的。多线程情况下,是不起作用的。应该是注册用户信息表的标识符会重复的问题。给生成用户唯一标识符uuid加synchronized同步,这样uuid在多线程下是不会重复的。 如果你使用spring 时,会有这样的问题。spring 默认bean 配置是一个single ..也就是所有的请求都会便用这一个对象。你需要把这个改成 scope="prototype" LZ说的重复应该是用户录入内容的重复了,比如A录入“中国银行”,B也同时录入“中国银行”,由于之前A、B都没保存,所以在前台检验时就通过,这时再提交到后台,就会出现重复了,虽然说两人的录入基本上是同时的,但服务器处理起来还是会有先后顺序的,建议在后台保存的时候也加一个验证做判断,在保存记录前先判断是否有重复的,如果有,就做异常处理或给用户提示。 我的解决方法是 本地生成PK, insert时一起插入进去,用的UUID. java.util.UUID 同意,用户名相同吗,Unique Index不就行了?,搞这么复杂 现在公司java面试都问些什么问题? 同一个SQL环境不同,SQL出错,不明白. openjpa如何在控制台显示执行的SQL语句 JDBC 急!! strust2 +spring+hibernate的问题 求倒排表交集算法(若干已排序链表的交集) 为什么是空指针? webWork中文API及取服务器时间问题 求J2EESDK下载 java精品书 struts2输入校验得不出结果 求指点 struts2 Action返回List返回空...
你校验没用的原因应该是因为相同的数据是在你校验完以后加入的。
你可以在每个用户注册完成后。
让系统等待几毫秒再插下一个用户
Thread.sleep(20);
多线程情况下,是不起作用的。
应该是注册用户信息表的标识符会重复的问题。给生成用户唯一标识符uuid加synchronized同步,这样uuid在多线程下是不会重复的。