These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 5 posts ] 
Author Message
 Post subject: bidirectional association - excess sql generated?
PostPosted: Wed Oct 17, 2007 5:24 am 
Newbie

Joined: Wed May 16, 2007 7:17 am
Posts: 7
Hi,

I have a problem with a one-to-many and a many-to-one relationship, and the sql that is generated.

As shown in the code below if I comment out the first line from the code snippet below, as per Sect 17.2 of the docs

bugDO.Events.Add(eventDO);
eventDO.Bug = bugDO;

then this prevents an unecessary update on an object that hasn't changed as far as the database representation is concerned. See the generated SQL, and related mapping below.

From the mappings I have defined I would have assumed that the cascade="none" on the many-to-one end of the relationship would have prevented this from happening since there are no calls to save the bugDO object, only the eventDO.

It is quite important to avoid this unecessary update since I have triggers on the bugs table that will fire unecessarily.

Any help would be much appreciated,
Thanks
Chris

Hibernate version:
1.2.0.GA

Mapping documents:

Event Mapping:
Code:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-lazy="false">
   
  <class name="EuroBrats.Data.DAO.Domain.EventDO, EuroBrats.Data.DAO" table="events" schema="bugs">

    <id name="Id" column="id" type="Int64">
      <generator class="native"/>
    </id>

    <many-to-one name="Bug" class="EuroBrats.Data.DAO.Domain.BugDO, EuroBrats.Data.DAO" column="bugid" cascade="none"/>

    <!-- Properties Omitted -->
   
  </class>
</hibernate-mapping>


Bug Mapping:
Code:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-lazy="false">
  <class name="EuroBrats.Data.DAO.Domain.BugDO, EuroBrats.Data.DAO" table="bugs" schema="bugs" optimistic-lock="version">

    <id name="Id" column="id" type="Int64">
      <generator class="native"/>
    </id>

    <version name="VersionId" column="versionid" type="Int64" generated="always"/>

    <!-- Properties Omitted -->

    <bag name="Events" lazy="true" cascade="delete" inverse="true">
      <key column="bugid" foreign-key="fk_events_bugid" />
      <one-to-many class="EuroBrats.Data.DAO.Domain.EventDO, EuroBrats.Data.DAO" />
    </bag>

  </class>
</hibernate-mapping>


Code between sessionFactory.openSession() and session.close():

Code:
EventDO eventDO = new EventDO();
BugDO bugDO = _bugDAO.Load(1, false);

bugDO.Events.Add(eventDO);  //THE LINE THAT ALTERS SQL  IF COMMENTED
eventDO.Bug = bugDO;

eventDO = _eventDAO.Save(eventDO);


Name and version of the database you are using:
Postgres 8.1.3

The generated SQL (show_sql=true):

Case 1) The line with the comment next to it above is removed:
Code:
//SELECTS for BugDO omitted
NHibernate: INSERT INTO bugs.events (bugid, content, createdon, createdbyid) VALUES (:p0, :p1, :p2, :p3); select lastval(); :p0 = '1', :p1 = 'TEST CONTENT NEW EVENT', :p2 = '17/10/2007 09:50:44', :p3 = '5224'


Case 2) The line with the comment next to it is included, note the extra UPDATE and version SELECT for the bugs table:
Code:
//SELECTS for BugDO ommited
NHibernate: INSERT INTO bugs.events (bugid, content, createdon, createdbyid) VALUES (:p0, :p1, :p2, :p3); select lastval(); :p0 = '1', :p1 = 'TEST CONTENT NEW EVENT', :p2 = '17/10/2007 10:06:24', :p3 = '5224'

NHibernate: UPDATE bugs.bugs SET title = :p0, createdon = :p1, createdbyid = :p2, changedon = :p3, changedbyid = :p4, importedid = :p5, descriptionid = :p6 WHERE id = :p7 AND versionid = :p8; :p0 = 'New Bug 0', :p1 = '15/10/2007 10:12:12', :p2 = '7673', :p3 = '15/10/2007 10:12:12', :p4 = '5148', :p5 = '', :p6 = '1', :p7 = '1', :p8 = '1'

NHibernate: SELECT bugdo_.versionid as versionid0_ FROM bugs.bugs bugdo_ WHERE bugdo_.id=:p0; :p0 = '1'


Top
 Profile  
 
 Post subject: Bug with versioned parent?
PostPosted: Mon Nov 19, 2007 1:35 pm 
Newbie

Joined: Thu Sep 06, 2007 5:06 am
Posts: 6
Happens here too. I've narrowed it down to a simple parent/child mapping. It seems to happen only when the parent has a version property.

This is a serious problem for me: Unnecessarily updated objects cause StaleObjectExceptions for other sessions accessing them. The only workaround I found is to to fill code accessing those objects with redundant session.Refresh() calls.

Hibernate version:
1.2.0.GA

Mapping documents:

Parent class mapping:

Code:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" xmlns:xs="http://www.w3.org/2001/XMLSchema"
                   assembly="NHibParentChild"
                   namespace="NHibParentChild">
  <class name="Parent" table="Parents">
    <id name="Id" type="Int32" unsaved-value="0">
      <generator class="native"/>
    </id>
    <!-- test passes if the following line is omitted -->
    <version name="Version" unsaved-value="negative"/>
    <set name="Children" inverse="true" cascade="none" lazy="true">
      <key column="ParentId" />
      <one-to-many class="Child" />
    </set>
  </class>
</hibernate-mapping>


Note that the redundant updates don't happen if the version property is removed.

Child class mapping:

Code:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" xmlns:xs="http://www.w3.org/2001/XMLSchema"
                   assembly="NHibParentChild"
                   namespace="NHibParentChild">
  <class name="Child" table="Children">
    <id name="Id" type="Int32" unsaved-value="0">
      <generator class="native"/>
    </id>
    <many-to-one name="Parent" column="ParentId" class="Parent" cascade="none" not-null="true"/>
  </class>
</hibernate-mapping>


Code between sessionFactory.openSession() and session.close():

This is a test which checks whether the saved Parent's version was unnecessarily incremented after saving the child.

Code:
                // Create and save parent
                Parent pA = new Parent();
                session.Save(pA);
                session.Flush();

                int savedVersion = pA.Version;

                Child c1 = new Child();
                c1.Parent = pA;
                // Test passes if the following line is omitted
                pA.Children.Add(c1);

                session.Save(c1);
                // Test passes if the following line is omitted
                session.Flush();

                session.Refresh(pA);
                Assert.AreEqual(savedVersion, pA.Version, "parent was updated");


Name and version of the database you are using:
SQL Server 2005

The generated SQL (show_sql=true):

Code:
NHibernate: INSERT INTO Parents (Version) VALUES (@p0); select SCOPE_IDENTITY(); @p0 = '1'
NHibernate: INSERT INTO Children (ParentId) VALUES (@p0); select SCOPE_IDENTITY(); @p0 = '42'
NHibernate: UPDATE Parents SET Version = @p0 WHERE Id = @p1 AND Version = @p2; @p0 = '2', @p1 = '42', @p2 = '1'
NHibernate: SELECT parent0_.Id as Id1_0_, parent0_.Version as Version1_0_ FROM Parents parent0_ WHERE parent0_.Id=@p0; @p0 = '42'


The parent's version changes for some reason. This causes the last two redundant UPDATE and SELECT statements.

Debug level Hibernate log excerpt:
Code:
2007-11-19 19:13:22,234 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: opened session
2007-11-19 19:13:22,234 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: saving [NHibParentChild.Parent#<null>]
2007-11-19 19:13:22,234 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: executing insertions
2007-11-19 19:13:22,234 Thread-TestRunnerThread DEBUG NHibernate.Engine.Cascades: version unsaved-value strategy NEGATIVE
2007-11-19 19:13:22,234 Thread-TestRunnerThread DEBUG NHibernate.Engine.Versioning: Seeding: 1
2007-11-19 19:13:22,250 Thread-TestRunnerThread DEBUG NHibernate.Impl.WrapVisitor: Wrapped collection in role: NHibParentChild.Parent.Children
2007-11-19 19:13:22,250 Thread-TestRunnerThread DEBUG NHibernate.Persister.Entity.AbstractEntityPersister: Inserting entity: NHibParentChild.Parent (native id)
2007-11-19 19:13:22,250 Thread-TestRunnerThread DEBUG NHibernate.Persister.Entity.AbstractEntityPersister: Version: 1
2007-11-19 19:13:22,250 Thread-TestRunnerThread DEBUG NHibernate.Impl.BatcherImpl: Opened new IDbCommand, open IDbCommands: 1
2007-11-19 19:13:22,250 Thread-TestRunnerThread DEBUG NHibernate.Impl.BatcherImpl: Building an IDbCommand object for the SqlString: INSERT INTO Parents (Version) VALUES (?); select SCOPE_IDENTITY()
2007-11-19 19:13:22,250 Thread-TestRunnerThread DEBUG NHibernate.Persister.Entity.AbstractEntityPersister: Dehydrating entity: [NHibParentChild.Parent#<null>]
2007-11-19 19:13:22,250 Thread-TestRunnerThread DEBUG NHibernate.SQL: INSERT INTO Parents (Version) VALUES (@p0); select SCOPE_IDENTITY(); @p0 = '1'
2007-11-19 19:13:22,250 Thread-TestRunnerThread DEBUG NHibernate.Connection.DriverConnectionProvider: Obtaining IDbConnection from Driver
2007-11-19 19:13:22,265 Thread-TestRunnerThread DEBUG NHibernate.Impl.BatcherImpl: Opened IDataReader, open IDataReaders: 1
2007-11-19 19:13:22,265 Thread-TestRunnerThread DEBUG NHibernate.Persister.Entity.AbstractEntityPersister: Natively generated identity: 44
2007-11-19 19:13:22,265 Thread-TestRunnerThread DEBUG NHibernate.Driver.NHybridDataReader: running NHybridDataReader.Dispose()
2007-11-19 19:13:22,265 Thread-TestRunnerThread DEBUG NHibernate.Impl.BatcherImpl: Closed IDataReader, open IDataReaders :0
2007-11-19 19:13:22,265 Thread-TestRunnerThread DEBUG NHibernate.Impl.BatcherImpl: Closed IDbCommand, open IDbCommands: 0
2007-11-19 19:13:22,265 Thread-TestRunnerThread DEBUG NHibernate.Impl.ConnectionManager: aggressively releasing database connection
2007-11-19 19:13:22,265 Thread-TestRunnerThread DEBUG NHibernate.Connection.ConnectionProvider: Closing connection
2007-11-19 19:13:22,265 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: flushing session
2007-11-19 19:13:22,265 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: Flushing entities and processing referenced collections
2007-11-19 19:13:22,265 Thread-TestRunnerThread DEBUG NHibernate.Impl.AbstractVisitor: Processing collection for role NHibParentChild.Parent.Children
2007-11-19 19:13:22,265 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: Collection found: [NHibParentChild.Parent.Children#44], was: [<unreferenced>]
2007-11-19 19:13:22,265 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: Processing unreferenced collections
2007-11-19 19:13:22,265 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: scheduling collection removes/(re)creates/updates
2007-11-19 19:13:22,265 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: Flushed: 0 insertions, 0 updates, 0 deletions to 1 objects
2007-11-19 19:13:22,265 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: Flushed: 1 (re)creations, 0 updates, 0 removals to 1 collections
2007-11-19 19:13:22,265 Thread-TestRunnerThread DEBUG NHibernate.Impl.Printer: listing entities:
2007-11-19 19:13:22,281 Thread-TestRunnerThread DEBUG NHibernate.Impl.Printer: NHibParentChild.Parent{Version=1, Children=[], Id=44}
2007-11-19 19:13:22,281 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: executing flush
2007-11-19 19:13:22,281 Thread-TestRunnerThread DEBUG NHibernate.Impl.ConnectionManager: registering flush begin
2007-11-19 19:13:22,281 Thread-TestRunnerThread DEBUG NHibernate.Impl.ConnectionManager: registering flush end
2007-11-19 19:13:22,281 Thread-TestRunnerThread DEBUG NHibernate.Impl.ConnectionManager: aggressively releasing database connection
2007-11-19 19:13:22,281 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: post flush
2007-11-19 19:13:22,281 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: saving [NHibParentChild.Child#<null>]
2007-11-19 19:13:22,281 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: executing insertions
2007-11-19 19:13:22,281 Thread-TestRunnerThread DEBUG NHibernate.Persister.Entity.AbstractEntityPersister: Inserting entity: NHibParentChild.Child (native id)
2007-11-19 19:13:22,281 Thread-TestRunnerThread DEBUG NHibernate.Impl.BatcherImpl: Opened new IDbCommand, open IDbCommands: 1
2007-11-19 19:13:22,281 Thread-TestRunnerThread DEBUG NHibernate.Impl.BatcherImpl: Building an IDbCommand object for the SqlString: INSERT INTO Children (ParentId) VALUES (?); select SCOPE_IDENTITY()
2007-11-19 19:13:22,281 Thread-TestRunnerThread DEBUG NHibernate.Persister.Entity.AbstractEntityPersister: Dehydrating entity: [NHibParentChild.Child#<null>]
2007-11-19 19:13:22,281 Thread-TestRunnerThread DEBUG NHibernate.SQL: INSERT INTO Children (ParentId) VALUES (@p0); select SCOPE_IDENTITY(); @p0 = '44'
2007-11-19 19:13:22,281 Thread-TestRunnerThread DEBUG NHibernate.Connection.DriverConnectionProvider: Obtaining IDbConnection from Driver
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Impl.BatcherImpl: Opened IDataReader, open IDataReaders: 1
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Persister.Entity.AbstractEntityPersister: Natively generated identity: 17
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Driver.NHybridDataReader: running NHybridDataReader.Dispose()
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Impl.BatcherImpl: Closed IDataReader, open IDataReaders :0
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Impl.BatcherImpl: Closed IDbCommand, open IDbCommands: 0
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Impl.ConnectionManager: aggressively releasing database connection
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Connection.ConnectionProvider: Closing connection
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: flushing session
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Impl.CollectionEntry: Collection dirty: [NHibParentChild.Parent.Children#44]
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: Flushing entities and processing referenced collections
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: Updating entity: [NHibParentChild.Parent#44]
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Engine.Versioning: Incrementing: 1 to 2
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Impl.AbstractVisitor: Processing collection for role NHibParentChild.Parent.Children
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: Collection found: [NHibParentChild.Parent.Children#44], was: [NHibParentChild.Parent.Children#44]
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: Processing unreferenced collections
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: scheduling collection removes/(re)creates/updates
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: Flushed: 0 insertions, 1 updates, 0 deletions to 2 objects
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: Flushed: 0 (re)creations, 1 updates, 0 removals to 1 collections
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Impl.Printer: listing entities:
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Impl.Printer: NHibParentChild.Child{Parent=Parent#44, Id=17}
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Impl.Printer: NHibParentChild.Parent{Version=1, Children=[Child#17], Id=44}
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: executing flush
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Impl.ConnectionManager: registering flush begin
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Persister.Entity.AbstractEntityPersister: Updating entity: [NHibParentChild.Parent#44]
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Persister.Entity.AbstractEntityPersister: Existing version: 1 -> New Version: 2
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Impl.BatcherImpl: Opened new IDbCommand, open IDbCommands: 1
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Impl.BatcherImpl: Building an IDbCommand object for the SqlString: UPDATE Parents SET Version = ? WHERE Id = ? AND Version = ?
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Persister.Entity.AbstractEntityPersister: Dehydrating entity: [NHibParentChild.Parent#44]
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.SQL: UPDATE Parents SET Version = @p0 WHERE Id = @p1 AND Version = @p2; @p0 = '2', @p1 = '44', @p2 = '1'
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Connection.DriverConnectionProvider: Obtaining IDbConnection from Driver
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Impl.BatcherImpl: Closed IDbCommand, open IDbCommands: 0
2007-11-19 19:13:22,296 Thread-TestRunnerThread DEBUG NHibernate.Impl.ConnectionManager: skipping aggressive-release due to flush cycle
2007-11-19 19:13:22,312 Thread-TestRunnerThread DEBUG NHibernate.Impl.ConnectionManager: registering flush end
2007-11-19 19:13:22,312 Thread-TestRunnerThread DEBUG NHibernate.Impl.ConnectionManager: aggressively releasing database connection
2007-11-19 19:13:22,312 Thread-TestRunnerThread DEBUG NHibernate.Connection.ConnectionProvider: Closing connection
2007-11-19 19:13:22,312 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: post flush
2007-11-19 19:13:22,312 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: refreshing [NHibParentChild.Parent#44]
2007-11-19 19:13:22,312 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: evicting collection: [NHibParentChild.Parent.Children#44]
2007-11-19 19:13:22,328 Thread-TestRunnerThread DEBUG NHibernate.Persister.Entity.AbstractEntityPersister: Fetching entity: [NHibParentChild.Parent#44]
2007-11-19 19:13:22,328 Thread-TestRunnerThread DEBUG NHibernate.Loader.Loader: loading entity: [NHibParentChild.Parent#44]
2007-11-19 19:13:22,328 Thread-TestRunnerThread DEBUG NHibernate.Impl.BatcherImpl: Opened new IDbCommand, open IDbCommands: 1
2007-11-19 19:13:22,328 Thread-TestRunnerThread DEBUG NHibernate.Impl.BatcherImpl: Building an IDbCommand object for the SqlString: SELECT parent0_.Id as Id1_0_, parent0_.Version as Version1_0_ FROM Parents parent0_ WHERE parent0_.Id=?
2007-11-19 19:13:22,328 Thread-TestRunnerThread INFO NHibernate.Loader.Loader: SELECT parent0_.Id as Id1_0_, parent0_.Version as Version1_0_ FROM Parents parent0_ WHERE parent0_.Id=@p0
2007-11-19 19:13:22,328 Thread-TestRunnerThread DEBUG NHibernate.SQL: SELECT parent0_.Id as Id1_0_, parent0_.Version as Version1_0_ FROM Parents parent0_ WHERE parent0_.Id=@p0; @p0 = '44'
2007-11-19 19:13:22,328 Thread-TestRunnerThread DEBUG NHibernate.Connection.DriverConnectionProvider: Obtaining IDbConnection from Driver
2007-11-19 19:13:22,328 Thread-TestRunnerThread DEBUG NHibernate.Impl.BatcherImpl: Opened IDataReader, open IDataReaders: 1
2007-11-19 19:13:22,328 Thread-TestRunnerThread DEBUG NHibernate.Loader.Loader: processing result set
2007-11-19 19:13:22,328 Thread-TestRunnerThread DEBUG NHibernate.Loader.Loader: result set row: 0
2007-11-19 19:13:22,328 Thread-TestRunnerThread DEBUG NHibernate.Loader.Loader: result row: 44
2007-11-19 19:13:22,328 Thread-TestRunnerThread DEBUG NHibernate.Loader.Loader: Initializing object from DataReader: [NHibParentChild.Parent#44]
2007-11-19 19:13:22,328 Thread-TestRunnerThread DEBUG NHibernate.Loader.Loader: Hydrating entity: NHibParentChild.Parent#44
2007-11-19 19:13:22,328 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: Version: 2
2007-11-19 19:13:22,328 Thread-TestRunnerThread DEBUG NHibernate.Loader.Loader: done processing result set (1 rows)
2007-11-19 19:13:22,328 Thread-TestRunnerThread DEBUG NHibernate.Driver.NHybridDataReader: running NHybridDataReader.Dispose()
2007-11-19 19:13:22,328 Thread-TestRunnerThread DEBUG NHibernate.Impl.BatcherImpl: Closed IDataReader, open IDataReaders :0
2007-11-19 19:13:22,328 Thread-TestRunnerThread DEBUG NHibernate.Impl.BatcherImpl: Closed IDbCommand, open IDbCommands: 0
2007-11-19 19:13:22,328 Thread-TestRunnerThread DEBUG NHibernate.Impl.ConnectionManager: aggressively releasing database connection
2007-11-19 19:13:22,328 Thread-TestRunnerThread DEBUG NHibernate.Connection.ConnectionProvider: Closing connection
2007-11-19 19:13:22,328 Thread-TestRunnerThread DEBUG NHibernate.Loader.Loader: total objects hydrated: 1
2007-11-19 19:13:22,328 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: resolving associations for: [NHibParentChild.Parent#44]
2007-11-19 19:13:22,328 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: creating collection wrapper:[NHibParentChild.Parent.Children#44]
2007-11-19 19:13:22,328 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: done materializing entity [NHibParentChild.Parent#44]
2007-11-19 19:13:22,328 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: initializing non-lazy collections
2007-11-19 19:13:22,328 Thread-TestRunnerThread DEBUG NHibernate.Loader.Loader: done entity load
2007-11-19 19:13:22,343 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: running ISession.Dispose()
2007-11-19 19:13:22,343 Thread-TestRunnerThread DEBUG NHibernate.Impl.SessionImpl: closing session
2007-11-19 19:13:22,343 Thread-TestRunnerThread DEBUG NHibernate.Impl.BatcherImpl: running BatcherImpl.Dispose(true)
2007-11-19 19:13:22,343 Thread-TestRunnerThread DEBUG NHibernate.Transaction.AdoTransaction: running AdoTransaction.Dispose()



Top
 Profile  
 
 Post subject:
PostPosted: Mon Nov 19, 2007 4:28 pm 
Contributor
Contributor

Joined: Sun Jun 26, 2005 5:03 am
Posts: 51
Location: London, UK
Could you raise a JIRA issue for this and I'll take a look

_________________
Paul Hatcher
NHibernate Team


Top
 Profile  
 
 Post subject:
PostPosted: Mon Nov 19, 2007 5:14 pm 
Newbie

Joined: Thu Sep 06, 2007 5:06 am
Posts: 6
Done.


Top
 Profile  
 
 Post subject: Solved
PostPosted: Tue Nov 20, 2007 6:15 am 
Newbie

Joined: Thu Sep 06, 2007 5:06 am
Posts: 6
Hi,

Solved by adding optimistic-lock="false" to the parent's set mapping. Thanks to Sergey Koshcheyev for pointing that out.

See http://jira.nhibernate.org/browse/NH-1206

Roy.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 5 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.