解决方案 »

  1.   

    我查看了下sql的执行.注册的并发很少.不会是这个问题.而且id已经自增到1900几分钟了.才报1895的主键插入失败.
    我看到Hibernate的自动的insert into 的 sql 把id也生成到sql中了.
      

  2.   


    把hibernate执行的sql找出来看下到底是哪里有问题,我觉得是hibernate有问题
      

  3.   


    把hibernate执行的sql找出来看下到底是哪里有问题,我觉得是hibernate有问题
    刚执行完自动生成的sql就出错了
    insert into fitness.fitness_member (admin_group_id, email, is_auth, last_login_date, last_login_ip, nickname, password, phone, qq_id, reg_date, sex, username, weibo_id, id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
    org.springframework.dao.DataIntegrityViolationException: Duplicate entry '1804' for key 'PRIMARY'; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: Duplicate entry '1804' for key 'PRIMARY'
      

  4.   

    检查下hibernate主键生成策略那里
      

  5.   

    我刚才查了些资料.因为这几天刚刚做的tomcat集群服务.而Hibernate在tomcat的集群下会出现问题.因为每个Hibernate都有一个实例维护主键的自增.所以多个tomcat运行时会出现id重复的问题!
    请问怎么能做到3个tomcat集群下Hibernate主键自增?谢谢
      

  6.   

    用sequence做主键生成策略吧。
      

  7.   

    我刚才查了些资料.因为这几天刚刚做的tomcat集群服务.而Hibernate在tomcat的集群下会出现问题.因为每个Hibernate都有一个实例维护主键的自增.所以多个tomcat运行时会出现id重复的问题!
    请问怎么能做到3个tomcat集群下Hibernate主键自增?谢谢
    你的生成策略怎么写的?http://zhidao.baidu.com/link?url=wRSU4un1NVZ2nTF1pIuUPR4JRW1Rou2P_9yH7bklKjhDiS55uiZG89PC69SuyoWCcDLEG6yKu2LBc6_E41Rxpq
      

  8.   

    有可能是hibernate的问题,也有可能是之前,或者是并发的问题。检查一下hibernate的主键生成策略吧
      

  9.   

    insert into fitness.fitness_member (admin_group_id, email, is_auth, last_login_date, last_login_ip, nickname, password, phone, qq_id, reg_date, sex, username, weibo_id, id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)为什么你的sql里有id这个字段,既然是自增就不应该在插入的时候指定id,你这个自增难道是hibernate生成的?那在集群环境下是肯定会出问题的
      

  10.   

    本来hibernate处理sql的时候就有点拖拖拉拉的,是不是hibernate没优化好?处理高并发是个头疼的问题,如果不是的话追一下代码。看看什么情况下会报错,还有xml配置是否正确?