Exemple #1
0
        /// <summary>
        /// Generate an <see cref="Int16"/>, <see cref="Int32"/>, or <see cref="Int64"/>
        /// for the identifier by using a database sequence.
        /// </summary>
        /// <param name="session">The <see cref="ISessionImplementor"/> this id is being generated in.</param>
        /// <param name="obj">The entity for which the id is being generated.</param>
        /// <returns>The new identifier as a <see cref="Int16"/>, <see cref="Int32"/>, or <see cref="Int64"/>.</returns>
        public virtual object Generate(ISessionImplementor session, object obj)
        {
            IDbCommand  cmd    = session.Batcher.PrepareCommand(new SqlString(sql));
            IDataReader reader = null;

            try
            {
                reader = session.Batcher.ExecuteReader(cmd);
                object result = null;
                reader.Read();
                result = IdentifierGeneratorFactory.Get(reader, returnClass);

                log.Debug("sequence ID generated: " + result);
                return(result);
            }
            // TODO: change to SQLException
            catch (Exception e)
            {
                // TODO: add code to log the sql exception
                log.Error("error generating sequence", e);
                throw;
            }
            finally
            {
                session.Batcher.CloseCommand(cmd, reader);
            }
        }
Exemple #2
0
 /// <summary>
 /// Generate an <see cref="Int16"/>, <see cref="Int32"/>, or <see cref="Int64"/>
 /// for the identifier by using a database sequence.
 /// </summary>
 /// <param name="session">The <see cref="ISessionImplementor"/> this id is being generated in.</param>
 /// <param name="obj">The entity for which the id is being generated.</param>
 /// <returns>The new identifier as a <see cref="Int16"/>, <see cref="Int32"/>, or <see cref="Int64"/>.</returns>
 public virtual object Generate(ISessionImplementor session, object obj)
 {
     try
     {
         var          cmd    = session.Batcher.PrepareCommand(CommandType.Text, sql, SqlTypeFactory.NoTypes);
         DbDataReader reader = null;
         try
         {
             reader = session.Batcher.ExecuteReader(cmd);
             try
             {
                 reader.Read();
                 object result = IdentifierGeneratorFactory.Get(reader, identifierType, session);
                 if (log.IsDebugEnabled)
                 {
                     log.Debug("Sequence identifier generated: " + result);
                 }
                 return(result);
             }
             finally
             {
                 reader.Close();
             }
         }
         finally
         {
             session.Batcher.CloseCommand(cmd, reader);
         }
     }
     catch (DbException sqle)
     {
         log.Error("error generating sequence", sqle);
         throw ADOExceptionHelper.Convert(session.Factory.SQLExceptionConverter, sqle, "could not get next sequence value");
     }
 }
Exemple #3
0
        public object Generate(ISessionImplementor session, object obj)
        {
            var sql = new SqlString(session.Factory.Dialect.SelectGUIDString);

            try
            {
                IDbCommand  st     = session.Batcher.PrepareCommand(CommandType.Text, sql, SqlTypeFactory.NoTypes);
                IDataReader reader = null;
                try
                {
                    reader = session.Batcher.ExecuteReader(st);
                    object result;
                    try
                    {
                        reader.Read();
                        result = IdentifierGeneratorFactory.Get(reader, identifierType, session);
                    }
                    finally
                    {
                        reader.Close();
                    }
                    log.Debug("GUID identifier generated: " + result);
                    return(result);
                }
                finally
                {
                    session.Batcher.CloseCommand(st, reader);
                }
            }
            catch (Exception sqle)
            {
                throw ADOExceptionHelper.Convert(session.Factory.SQLExceptionConverter, sqle, "could not retrieve GUID", sql);
            }
        }