Steve,
does he know about our injectable ISQLExceptionConverter ?
Usage examples available in:
NHibernate.Test.ExceptionsTest
Implementation example :
NHibernate.Test.ExceptionsTest.MSSQLExceptionConverterExample
NHibernate.Test.ExceptionsTest.OracleClientExceptionConverterExample
NHibernate.Test.ExceptionsTest.PostgresExceptionConverterExample
Old style configuration by code:
configuration.SetProperty(Cfg.Environment.SqlExceptionConverter,
typeof (MSSQLExceptionConverterExample).AssemblyQualifiedName);
New style configuration by code:
configure.DataBaseIntegration(db =>
{
db.Dialect<MsSql2000Dialect>();
db.ExceptionConverter<
MSSQLExceptionConverterExample>();
});
On Fri, Jul 22, 2011 at 11:28 AM, Stephen Bohlen <[email protected]> wrote:
> Patches always welcome when attached to JIRA issues.
>
> -Steve B.
> -----Original Message-----
> From: Gena <[email protected]>
> Sender: [email protected]
> Date: Fri, 22 Jul 2011 06:09:09
> To: nhibernate-development<[email protected]>
> Reply-To: [email protected]
> Subject: [nhibernate-development] DbException.Data["actual-sql-query"] is
> lost
> in exceptions tree on its way to logging
>
> I have a custom version of batcher implemented, derived from
> AbstractBatcher where I'm making sure that DbException is correctly
> catched and exception.Data["actual-sql-query"] is assigned to a full
> query string so that I can see it in the log (in the same way as it is
> done in AbstactBatcher, search for "actual-sql-query").
>
> The problem is that AbstractEntityPersister catches all DbExceptions
> and then it creates a new exception with a help of ADOExceptionHelper.
> But on the way it overrides my query with its own one in a form:
>
> "SQL: DELETE FROM features WHERE id = ?].
>
> As a result I'm missing actual value in "id=?" in the log. In my
> "actual-sql-query" SQL string is defined as:
>
> "DELETE FROM features WHERE id = @p0; Parameter Values: @p0=6"
>
> which is a bit more informative.
>
> Looks like a small inconsistency to me. AbstractEntityPersister
> probably should pass on "actual-sql-query" if it is defined instead of
> skipping it. Or at least it should log actual id.
>
>
>
>
--
Fabio Maulo