请教一下,我在使用Hibernate时,主键生成策略使用了Increment..请问这个策略的初始值是否可以设定?
比如:不让ID从1开始自增 设定第一条记录的ID值为10000, 然后第2条是10001... 依次自增?

解决方案 »

  1.   


    请指教触发器是??
    我的思路也是写段代码做个判定如果数据库里没有记录的话 那么插入一条记录 然后再把这条记录取出来UPDATE一下 把ID+10000...但是我想知道Increment这个策略里有没有属性可以直接设定初始值...如果有的话就更方便了而且又学到一点东西
      

  2.   


    你的那种判定会产生并发问题,所以治本的方法还是自己写个hibernate的主键生成器
      

  3.   


    不会....Hibernate源代码没研究过呀.你可以教我吗?
      

  4.   

    参照public class AssignedSequenceGenerator extends SequenceGenerator implements     
     PersistentIdentifierGenerator, Configurable {    
     private String entityName;    
          
     public void configure(Type type, Properties params, Dialect dialect) throws MappingException {    
      entityName = params.getProperty(ENTITY_NAME);    
      if (entityName==null) {    
       throw new MappingException("no entity name");    
      }    
          
      super.configure(type, params, dialect);      
     }    
         
     public Serializable generate(SessionImplementor session, Object obj)     
      throws HibernateException {    
          
      Serializable id = session.getEntityPersister( entityName, obj )     
        .getIdentifier( obj, session.getEntityMode() );    
          
      if (id==null) {    
       id = super.generate(session, obj);    
      }    
          
      return id;    
     }    
    }   
      

  5.   

    谢谢,给你分
    这段代码大概看懂了..我想把整个ID生成流程学习一下.但是我反编译了一下Hibernate源代码,发现里边类N多,我已经迷糊了.有没有好的SSH框架源码学习文档推荐一下,非常感谢
      

  6.   

    Hibernate源码有下载,不用反编译...