| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 
 |  @Override
  public Serializable generate(SessionImplementor session, Object obj) throws HibernateException {
    try {
 
    	//org.hibernate.engine.SessionImplementor n'existe plus au-dela de 3.3.2.GA
    	//PreparedStatement st = session.getBatcher().prepareSelectStatement(dialect.getSequenceNextValString(getSequenceName()));
    	PreparedStatement st = session.connection().prepareStatement(dialect.getSequenceNextValString(getSequenceName()));
      Serializable result = null;
      try {
        ResultSet rs = st.executeQuery();
        try {
          rs.next();
          //Serializable result = IdentifierGeneratorFactory.get(rs, identifierType);
          //begin patch hibernate => manage BigInteger and BigDecimal
          Class clazz = identifierType.getReturnedClass();
          if (clazz == Long.class) {
            result = new Long(rs.getLong(1));
          } else if (clazz == Integer.class) {
            result = new Integer(rs.getInt(1));
          } else if (clazz == Short.class) {
            result = new Short(rs.getShort(1));
          } else if (clazz == String.class) {
            result = rs.getString(1);
          } else if (clazz == BigDecimal.class) {
            result = rs.getBigDecimal(1);
          } else if (clazz == BigInteger.class) {
            result = rs.getBigDecimal(1).toBigInteger();
          } else {
            throw new IdentifierGenerationException("this id generator generates long, integer, short or string");
          }
          //end patch hibernate => manage BigInteger and BigDecimal
          if (log.isDebugEnabled()) {
            log.debug("Sequence identifier generated: " + result);
          }
          return result;
        } finally {
          rs.close();
        }
      } finally {
      	//org.hibernate.engine.SessionImplementor n'existe plus au-dela de 3.3.2.GA
      	//session.getBatcher().closeStatement(st);
      	session.connection().close();
      }
 
    } catch (SQLException sqle) {
    	//throw  convert(session.getFactory().getSQLExceptionConverter(), sqle, "could not get next sequence value", dialect.getSequenceNextValString(getSequenceName()));
    	throw new HibernateException(sqle.getMessage());
    }
  } | 
Partager