Hi,
I originally posted this on the FluentNhibernate group, but they
suggested I also post it here...
I've been building an app with Native Ids initially, and am now
switching to HiLos.
However, I've come across a strange problem, and don't understand
what's happening.
With native ids everything is working fine. However, if I one of the
entity mappings to HiLo, new objects will not persist in the database
(using SaveOrUpdate). I don't receive any errors and no exception is
thrown - everything acts like it's working, but no new db records.
I'm just using default hilo settings. I'm recreating the DB with
SchemaUpdate/Export beforehand, and the Hibernate_Unique_Key table
with the next_hi column is being created correctly.
Here's the original mapping line that works:
Id(c => c.Id).GeneratedBy.Native();
And the one that breaks everything:
Id(c => c.Id).GeneratedBy.HiLo("100");
If I try to SaveOrUpdate() a new object, all I get in the sql logs is:
2010-05-28 18:15:09,703 DEBUG 4 NHibernate.SQL - Reading high
value:select next_hi from hibernate_unique_key for update
2010-05-28 18:15:09,718 DEBUG 4 NHibernate.SQL - Updating high
value:update hibernate_unique_key set next_hi = ?p0 where next_hi = ?
p1;?p0 = 4, ?p1 = 3
And in the nhibernate log:
2010-05-28 18:18:33,734 DEBUG 8 NHibernate.Impl.SessionImpl -
[session-
id=a948d92d-3edc-4f15-aa5a-3b7d461cb455] opened session at timestamp:
634106675137, for session factory: [/046fd6ce97f547aeb8a9edb8ddf6e2ef]
2010-05-28 18:18:33,734 DEBUG 8 NHibernate.Engine.IdentifierValue -
unsaved-value: 0
2010-05-28 18:18:33,734 DEBUG 8
NHibernate.Event.Default.AbstractSaveEventListener - transient
instance of: xxxx.BusinessEvent
2010-05-28 18:18:33,734 DEBUG 8
NHibernate.Event.Default.DefaultSaveOrUpdateEventListener - saving
transient instance
2010-05-28 18:18:33,734 DEBUG 8
NHibernate.Event.Default.AbstractSaveEventListener - generated
identifier: 304, using strategy: NHibernate.Id.TableHiLoGenerator
2010-05-28 18:18:33,734 DEBUG 8
NHibernate.Event.Default.AbstractSaveEventListener - saving
[xxxx.BusinessEvent#304]
2010-05-28 18:18:33,734 DEBUG 8 NHibernate.Impl.SessionImpl -
[session-
id=a948d92d-3edc-4f15-aa5a-3b7d461cb455] running ISession.Dispose()
2010-05-28 18:18:33,734 DEBUG 8 NHibernate.Impl.SessionImpl -
[session-
id=a948d92d-3edc-4f15-aa5a-3b7d461cb455] executing real Dispose(True)
2010-05-28 18:18:33,734 DEBUG 8 NHibernate.Impl.SessionImpl - closing
session
2010-05-28 18:18:33,734 DEBUG 8 NHibernate.AdoNet.AbstractBatcher -
running BatcherImpl.Dispose(true)
Versions:
NHibernate 2.1.2.4000
MySQL5Dialect
MySQL5.0.67
I'm a bit stumped - any ideas what the problem might be? Or what to
check?
Thanks