Hi Richard,

Thanks for the information.
I am now using guid.comb as the POID strategy. Our database is just simply
storing events.
This generates just an insert only when using a simple entity - which is
what we want.

However I cant get it to work for complex types e.g an order with many order
items.
Is the following scenario possible?

Parent entity where POID = guid.comb
Child entity where POID = guid.comb
Note: One Parent has many children.

When I attempt to do a save I get an exception:

NHibernate: INSERT INTO MoreComplexMapping_Order (CustomerId,
Description, Id) VALUES (@p0, @p1, @p2);@p0 = 1, @p1 = 'My new order',
@p2 = dbe893b4-fa1c-4779-8f48-9e8200e36eb1
NHibernate: UPDATE MoreComplexMapping_OrderItem SET OrderId = @p0,
Description = @p1 WHERE Id = @p2;@p0
 = NULL, @p1 = 'desc 1', @p2 = 946475f6-f670-4a5b-945a-e033836ff002
13:48:03,560 ERROR [   7] AbstractFlushingEventListener [(null)]-
Could not synchronize database state with session

It seems to attempt to do an update when I want it to do an insert.

Regards,
Billy Stack




On Sun, Feb 6, 2011 at 10:17 AM, Richard Brown (gmail) <
[email protected]> wrote:

>   Hi Billy,
>
> The warning occurs when you call SaveOrUpdate() on an entity with an
> 'assigned' identifier.
>
> When NH doesn't control the IDs, it can't tell if that instance should be
> saved (it's new), or updated (it already exists in the DB), so it warns you
> to let you know it's hitting the DB (twice) when you might not have expected
> it to.
>
> The fix that caused this behaviour:  http://216.121.112.228/browse/NH-1914
> The discussion on what it should do:
> http://groups.google.com/group/nhibernate-development/browse_thread/thread/d10873bbc7ca917c/d608c5512a224288?lnk=gst&q=1914#d608c5512a224288
>
> Regards,
>     Richard
>
>
>   *From:* Billy Stack <[email protected]>
> *Sent:* Sunday, February 06, 2011 9:29 AM
> *To:* [email protected]
> *Subject:* Re: [nhusers] Re: When using id generator class="assigned", why
> does extra select take place
>    The Id for the entity we were generating was a comb guid. Rather than
> the code setting this we just changed the id generator to "guid.comb". No
> select is performed by NHibernate by default when we perform a save.
>
> Thanks for the help
> Billy Stack
>
>   On Sat, Feb 5, 2011 at 3:10 PM, Jason Meckley <[email protected]>wrote:
>
>>  this worked in my situation, but the entities I was saving where
>> children of a parent entity that was resolved from session. so the context
>> is slightly different. In your situation it sounds like the entity with the
>> assigned id is the root.
>>
>> You know it's an insert only model, but NH doesn't know that, so it needs
>> to check if it exists. There may be a mapping/configuration setting that
>> prevents load before save, or prevents updates, but I not 100% sure about
>> that.
>>
>> If that doesn't work (or exist) I would change the POID strategy to allow
>> NH/DB to handle it. If the assigned ID has business meaning, then map this
>> as an immutable attribute of the entity.
>>
>> Another option is to drop the use of NH altogether. I haven't used event
>> sourcing myself, but what little I understand it suppose to simplify
>> persistence concerns. If that's the case then NH or an RDBMS wouldn't be
>> required.
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "nhusers" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> mailto:nhusers%[email protected]<nhusers%[email protected]>.
>>
>>
>> For more options, visit this group at
>> http://groups.google.com/group/nhusers?hl=en.
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "nhusers" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/nhusers?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "nhusers" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/nhusers?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to