I have an object (Rule) that has a set of objects (RuleCondition). When I create a new Rule, set properties, add a RuleCondition and call saveOrUpdate(), the Rule gets persisted but the RuleCondition does not.
I found this in the FAQ and the unsaved-value was set to null for all my objects and I have cascade="all" for the collection.
Hibernate actually sees that RuleCondition has a null id and assigns an id, but when it comes time to persist, it calls an update instead of a save.
Should I be using a different unsaved-value other than null?
below is the code I am using. The saveObject() exists in a stateless bean using CMT. Using hibernate 2.0.3
Thanks for any help.
Doug
Code:
public Object saveObject(Object object) throws PersistenceEngineException {
log.info("Trying to saveObject " + object.getClass().toString());
Session session = null;
try {
session = sessionFactory.openSession();
session.saveOrUpdate(object);
} catch (HibernateException e) {
ctx.setRollbackOnly();
throw new PersistenceEngineException("Error saving object: " + object.toString());
} finally {
try {
releaseSession(session);
session.close();
} catch (HibernateException e) {
// do nothing
}
}
return object;
}
protected void releaseSession(Session aSession) throws HibernateException {
if (aSession != null) {
aSession.flush();
aSession.close();
}
}
Rule mapping
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class
name="org.scra.emall.rule.RuleDefinition"
table="rule_def"
dynamic-update="false"
dynamic-insert="false"
>
<id
name="id"
column="id"
type="java.lang.Integer"
unsaved-value="null"
>
<generator class="sequence">
<param name="sequence">ruleDef_id_seq</param>
</generator>
</id>
<property
name="name"
type="java.lang.String"
update="true"
insert="true"
column="rule_name"
length="50"
not-null="true"
unique="true"
/>
<property
name="action"
type="java.lang.String"
update="true"
insert="true"
column="action"
length="25"
/>
<property
name="creationDate"
type="java.util.Date"
update="true"
insert="true"
column="creation_date"
/>
<property
name="email"
type="java.lang.String"
update="true"
insert="true"
column="email"
length="50"
/>
<property
name="errorMessage"
type="java.lang.String"
update="true"
insert="true"
column="error_message"
length="1000"
/>
<set
name="ruleConditions"
table="rule_condition_def"
lazy="false"
inverse="false"
cascade="all"
sort="unsorted"
>
<key
column="rule_id"
/>
<one-to-many
class="org.scra.emall.rule.ConditionDefinition"
/>
</set>
<!--
To add non XDoclet property mappings, create a file named
hibernate-properties-RuleDefinition.xml
containing the additional properties and place it in your merge dir.
-->
</class>
</hibernate-mapping>
Condition mapping
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class
name="org.scra.emall.rule.ConditionDefinition"
table="rule_condition_def"
dynamic-update="false"
dynamic-insert="false"
>
<id
name="id"
column="id"
type="java.lang.Integer"
unsaved-value="null"
>
<generator class="sequence">
<param name="sequence">conditionDef_id_seq</param>
</generator>
</id>
<property
name="operatorSymbol"
type="java.lang.String"
update="true"
insert="true"
column="operatorSymbol"
length="5"
not-null="true"
/>
<one-to-one
name="objectOperand"
class="org.scra.emall.rule.ObjectOperand"
cascade="all"
outer-join="auto"
constrained="false"
/>
<one-to-one
name="valueOperand"
class="org.scra.emall.rule.ValueOperand"
cascade="all"
outer-join="auto"
constrained="false"
/>
<!--
To add non XDoclet property mappings, create a file named
hibernate-properties-ConditionDefinition.xml
containing the additional properties and place it in your merge dir.
-->
</class>
</hibernate-mapping>
Debug statements...
Code:
12:10:50,171 INFO Environment:403 - Hibernate 2.0.3
12:10:50,171 INFO Environment:437 - loaded properties from resource hibernate.properties: {hibernate.cglib.use_reflection_optimizer=true, h
ibernate.dialect=net.sf.hibernate.dialect.OracleDialect, hibernate.show_sql=true, hibernate.connection.datasource=ruleDS}
12:10:50,187 INFO Environment:452 - using CGLIB reflection optimizer
12:10:50,187 INFO Environment:462 - JVM proxy support: true
12:10:50,187 INFO Configuration:283 - Mapping resource: org/scra/emall/rule/RuleDefinition.hbm.xml
12:10:50,546 DEBUG DTDEntityResolver:20 - trying to locate http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd in classpath under net
/sf/hibernate/
12:10:50,546 DEBUG DTDEntityResolver:29 - found http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd in classpath
12:10:50,765 INFO Binder:178 - Mapping class: org.scra.emall.rule.RuleDefinition -> rule_def
12:10:50,953 DEBUG Binder:394 - Mapped property: id -> id, type: integer
12:10:50,984 DEBUG Binder:394 - Mapped property: name -> rule_name, type: string
12:10:51,000 DEBUG Binder:394 - Mapped property: action -> action, type: string
12:10:51,000 DEBUG Binder:394 - Mapped property: creationDate -> creation_date, type: timestamp
12:10:51,000 DEBUG Binder:394 - Mapped property: email -> email, type: string
12:10:51,000 DEBUG Binder:394 - Mapped property: errorMessage -> error_message, type: string
12:10:51,015 DEBUG Binder:394 - Mapped property: ruleConditions, type: java.util.Set
12:10:51,031 INFO Configuration:283 - Mapping resource: org/scra/emall/rule/ConditionDefinition.hbm.xml
12:10:51,031 DEBUG DTDEntityResolver:20 - trying to locate http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd in classpath under net
/sf/hibernate/
12:10:51,031 DEBUG DTDEntityResolver:29 - found http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd in classpath
12:10:51,062 INFO Binder:178 - Mapping class: org.scra.emall.rule.ConditionDefinition -> rule_condition_def
12:10:51,062 DEBUG Binder:394 - Mapped property: id -> id, type: integer
12:10:51,062 DEBUG Binder:394 - Mapped property: operatorSymbol -> operatorSymbol, type: string
12:10:51,062 DEBUG Binder:394 - Mapped property: objectOperand, type: org.scra.emall.rule.ObjectOperand
12:10:51,078 DEBUG Binder:394 - Mapped property: valueOperand, type: org.scra.emall.rule.ValueOperand
12:10:51,078 INFO Configuration:283 - Mapping resource: org/scra/emall/rule/ObjectOperand.hbm.xml
12:10:51,078 DEBUG DTDEntityResolver:20 - trying to locate http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd in classpath under net
/sf/hibernate/
12:10:51,078 DEBUG DTDEntityResolver:29 - found http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd in classpath
12:10:51,093 INFO Binder:178 - Mapping class: org.scra.emall.rule.ObjectOperand -> rule_condition_object_operand
12:10:51,109 DEBUG Binder:394 - Mapped property: id -> id, type: integer
12:10:51,109 DEBUG Binder:394 - Mapped property: objectClass -> object_class, type: string
12:10:51,109 DEBUG Binder:394 - Mapped property: identifier -> identifier, type: string
12:10:51,109 DEBUG Binder:394 - Mapped property: objectProperty -> object_property, type: string
12:10:51,109 INFO Configuration:283 - Mapping resource: org/scra/emall/rule/ValueOperand.hbm.xml
12:10:51,125 DEBUG DTDEntityResolver:20 - trying to locate http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd in classpath under net
/sf/hibernate/
12:10:51,125 DEBUG DTDEntityResolver:29 - found http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd in classpath
12:10:51,140 INFO Binder:178 - Mapping class: org.scra.emall.rule.ValueOperand -> rule_condition_value_operand
12:10:51,140 DEBUG Binder:394 - Mapped property: id -> id, type: integer
12:10:51,156 DEBUG Binder:394 - Mapped property: objectValue -> objectValue, type: string
12:10:51,156 INFO Configuration:492 - processing one-to-many association mappings
12:10:51,156 DEBUG Binder:1134 - Second pass for collection: org.scra.emall.rule.RuleDefinition.ruleConditions
12:10:51,156 INFO Binder:1025 - Mapping collection: org.scra.emall.rule.RuleDefinition.ruleConditions -> rule_condition_def
12:10:51,156 DEBUG Binder:1146 - Mapped collection key: rule_id, one-to-many: org.scra.emall.rule.ConditionDefinition
12:10:51,171 INFO Configuration:503 - processing foreign key constraints
12:10:51,171 DEBUG Configuration:513 - resolving reference to class: org.scra.emall.rule.RuleDefinition
12:10:51,390 INFO SessionFactoryImpl:132 - building session factory
12:10:51,406 DEBUG SessionFactoryImpl:134 - instantiating session factory with properties: {java.vendor=Sun Microsystems Inc., org.xml.sax.p
arser=weblogic.xml.jaxp.RegistryParser, os.name=Windows XP, sun.boot.class.path=D:\bea\JDK141~1\jre\lib\rt.jar;D:\bea\JDK141~1\jre\lib\i18n.
jar;D:\bea\JDK141~1\jre\lib\sunrsasign.jar;D:\bea\JDK141~1\jre\lib\jsse.jar;D:\bea\JDK141~1\jre\lib\jce.jar;D:\bea\JDK141~1\jre\lib\charsets
.jar;D:\bea\JDK141~1\jre\classes, sun.java2d.fontpath=, java.vm.specification.vendor=Sun Microsystems Inc., java.runtime.version=1.4.1_03-b0
2, weblogic.Name=myserver, jmx.implementation.vendor=Sun Microsystems, user.name=doug, jmx.implementation.name=JMX RI, user.language=en, jav
a.naming.factory.initial=weblogic.jndi.WLInitialContextFactory, sun.boot.library.path=D:\bea\JDK141~1\jre\bin, jmx.specification.name=Java M
anagement Extensions, java.version=1.4.1_03, user.timezone=America/New_York, sun.arch.data.model=32, javax.rmi.CORBA.UtilClass=weblogic.iiop
.UtilDelegateImpl, jmx.specification.version=1.0 Final Release, java.endorsed.dirs=D:\bea\JDK141~1\jre\lib\endorsed, vde.home=.\myserver\lda
p, sun.cpu.isalist=pentium i486 i386, jmx.implementation.version=1.0, file.encoding.pkg=sun.io, weblogic.mbeanLegalClause.ByPass=false, file
.separator=\, java.specification.name=Java Platform API Specification, hibernate.cglib.use_reflection_optimizer=true, java.class.version=48.
0, user.country=US, java.home=D:\bea\JDK141~1\jre, java.vm.info=mixed mode, os.version=5.1, log4j.config=log4j.properties, hibernate.connect
ion.datasource=ruleDS, org.omg.CORBA.ORBSingletonClass=weblogic.corba.orb.ORB, path.separator=;, java.vm.version=1.4.1_03-b02, java.util.pre
fs.PreferencesFactory=java.util.prefs.WindowsPreferencesFactory, user.variant=, java.protocol.handler.pkgs=weblogic.utils|weblogic.utils|web
logic.net, jmx.specification.vendor=Sun Microsystems, java.awt.printerjob=sun.awt.windows.WPrinterJob, java.security.policy=D:\bea\WEBLOG~1\
server\lib\weblogic.policy, sun.io.unicode.encoding=UnicodeLittle, awt.toolkit=sun.awt.windows.WToolkit, java.naming.factory.url.pkgs=weblog
ic.jndi.factories:weblogic.corba.j2ee.naming.url, user.home=C:\Documents and Settings\doug, java.specification.vendor=Sun Microsystems Inc.,
org.xml.sax.driver=weblogic.apache.xerces.parsers.SAXParser, java.library.path=D:\bea\JDK141~1\bin;.;C:\WINDOWS\System32;C:\WINDOWS;D:\bea\
WEBLOG~1\server\bin;D:\bea\JDK141~1\jre\bin;D:\bea\JDK141~1\bin;C:\oracle\ora92\bin;C:\Program Files\Oracle\jre\1.1.8\bin;C:\WINDOWS\system3
2;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Common Files\Adaptec Shared\System;c:\bin\vslick\win;D:\bea\jdk141_03\bin;C:\Program
Files\SSH Communications Security\SSH Secure Shell;C:\Program Files\GNU\WinCvs 1.3\CVSNT;C:\cygwin;C:\bin\maven-1.0-beta-10\bin;C:\bin;D:\be
a\WEBLOG~1\server\bin\oci920_8, java.vendor.url=http://java.sun.com/, java.vm.vendor=Sun Microsystems Inc., hibernate.dialect=net.sf.hiberna
te.dialect.OracleDialect, java.runtime.name=Java(TM) 2 Runtime Environment, Standard Edition, java.class.path=D:\bea\JDK141~1\lib\tools.jar;
D:\bea\WEBLOG~1\server\lib\weblogic_sp.jar;D:\bea\WEBLOG~1\server\lib\weblogic.jar;D:\bea\WEBLOG~1\server\lib\ojdbc14.jar;D:\bea\WEBLOG~1\co
mmon\eval\pointbase\lib\pbserver44.jar;D:\bea\WEBLOG~1\common\eval\pointbase\lib\pbclient44.jar;D:\bea\JDK141~1\jre\lib\rt.jar;D:\bea\WEBLOG
~1\server\lib\webservices.jar;, java.vm.specification.name=Java Virtual Machine Specification, java.vm.specification.version=1.0, javax.rmi.
CORBA.PortableRemoteObjectClass=weblogic.iiop.PortableRemoteObjectDelegateImpl, sun.cpu.endian=little, sun.os.patch.level=Service Pack 1, ja
va.io.tmpdir=C:\DOCUME~1\doug\LOCALS~1\Temp\, java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport.cgi, os.arch=x86, java.awt.graphicse
nv=sun.awt.Win32GraphicsEnvironment, java.ext.dirs=D:\bea\JDK141~1\jre\lib\ext, user.dir=D:\bea\user_projects\domains\ruleEngine, line.separ
ator=
, java.vm.name=Java HotSpot(TM) Client VM, javax.xml.soap.MessageFactory=weblogic.webservice.core.soap.MessageFactoryImpl, file.encoding=Cp1
252, org.omg.CORBA.ORBClass=weblogic.corba.orb.ORB, javax.xml.rpc.ServiceFactory=weblogic.webservice.core.rpc.ServiceFactoryImpl, weblogic.P
roductionModeEnabled=false, java.specification.version=1.4, hibernate.show_sql=true}
12:10:51,437 INFO Dialect:83 - Using dialect: net.sf.hibernate.dialect.OracleDialect
12:10:51,468 INFO NamingHelper:26 - JNDI InitialContext properties:{}
12:10:51,468 INFO DatasourceConnectionProvider:52 - Using datasource: ruleDS
12:10:51,468 INFO SessionFactoryImpl:162 - Use outer join fetching: true
12:10:51,796 INFO SessionFactoryImpl:185 - Use scrollable result sets: true
12:10:51,796 INFO SessionFactoryImpl:186 - JDBC 2 max batch size: 15
12:10:51,796 INFO SessionFactoryImpl:194 - echoing all SQL to stdout
12:10:52,437 DEBUG SessionFactoryObjectFactory:39 - initializing class SessionFactoryObjectFactory
12:10:52,453 DEBUG SessionFactoryObjectFactory:76 - registered: 13f8b386f7f3442300f7f34428950000 (unnamed)
12:10:52,453 INFO SessionFactoryObjectFactory:82 - no JDNI name configured
12:10:52,453 INFO SessionFactoryImpl:269 - Query language substitutions: {}
12:10:52,453 DEBUG SessionFactoryImpl:281 - instantiated session factory
12:10:52,468 DEBUG SessionFactoryImpl:595 - serializing: 13f8b386f7f3442300f7f34428950000
12:10:52,468 DEBUG SessionFactoryImpl:597 - serialized
12:10:52,484 DEBUG SessionFactoryImpl:590 - deserializing
12:10:52,484 DEBUG SessionFactoryImpl:592 - deserialized: 13f8b386f7f3442300f7f34428950000
12:10:52,484 DEBUG SessionFactoryImpl:497 - Resolving serialized SessionFactory
12:10:52,484 DEBUG SessionFactoryObjectFactory:145 - lookup: uid=13f8b386f7f3442300f7f34428950000
12:10:52,484 DEBUG SessionFactoryImpl:512 - resolved SessionFactory by uid
12:10:52,500 DEBUG SessionFactoryImpl:487 - Returning a Reference to the SessionFactory
12:10:52,500 INFO HibernatePersistenceEngineBean:133 - Trying to saveObject class org.scra.emall.rule.RuleDefinition
12:10:52,562 DEBUG SessionImpl:413 - opened session
12:10:52,562 DEBUG Cascades:237 - unsaved-value strategy NULL
12:10:52,562 DEBUG SessionImpl:1201 - saveOrUpdate() unsaved instance with id: null
12:10:52,562 DEBUG BatcherImpl:166 - about to open: 0 open PreparedStatements, 0 open ResultSets
12:10:52,562 DEBUG SessionFactoryImpl:526 - prepared statement get: select ruleDef_id_seq.nextval from dual
Hibernate: select ruleDef_id_seq.nextval from dual
12:10:52,562 DEBUG SessionFactoryImpl:536 - preparing statement
12:10:52,796 DEBUG SequenceGenerator:70 - Sequence identifier generated: 17
12:10:52,796 DEBUG BatcherImpl:173 - done closing: 0 open PreparedStatements, 0 open ResultSets
12:10:52,796 DEBUG SessionFactoryImpl:554 - closing statement
12:10:52,796 DEBUG SessionImpl:656 - saving [org.scra.emall.rule.RuleDefinition#17]
12:10:52,812 DEBUG Cascades:336 - processing cascades for: org.scra.emall.rule.RuleDefinition
12:10:52,812 DEBUG Cascades:344 - done processing cascades for: org.scra.emall.rule.RuleDefinition
12:10:52,828 DEBUG SessionImpl:2520 - Wrapped collection in role: org.scra.emall.rule.RuleDefinition.ruleConditions
12:10:52,828 DEBUG Cascades:336 - processing cascades for: org.scra.emall.rule.RuleDefinition
12:10:52,843 DEBUG Cascades:275 - cascading to collection: org.scra.emall.rule.RuleDefinition.ruleConditions
12:10:52,843 DEBUG Cascades:87 - cascading to saveOrUpdate()
12:10:52,843 DEBUG Cascades:237 - unsaved-value strategy NULL
12:10:52,843 DEBUG SessionImpl:1201 - saveOrUpdate() unsaved instance with id: null
12:10:52,843 DEBUG BatcherImpl:166 - about to open: 0 open PreparedStatements, 0 open ResultSets
12:10:52,843 DEBUG SessionFactoryImpl:526 - prepared statement get: select conditionDef_id_seq.nextval from dual
Hibernate: select conditionDef_id_seq.nextval from dual
12:10:52,843 DEBUG SessionFactoryImpl:536 - preparing statement
12:10:52,859 DEBUG SequenceGenerator:70 - Sequence identifier generated: 12
12:10:52,859 DEBUG BatcherImpl:173 - done closing: 0 open PreparedStatements, 0 open ResultSets
12:10:52,859 DEBUG SessionFactoryImpl:554 - closing statement
12:10:52,859 DEBUG SessionImpl:656 - saving [org.scra.emall.rule.ConditionDefinition#12]
12:10:52,859 DEBUG Cascades:344 - done processing cascades for: org.scra.emall.rule.RuleDefinition
12:10:52,859 DEBUG SessionImpl:2011 - flushing session
12:10:52,859 DEBUG Cascades:336 - processing cascades for: org.scra.emall.rule.RuleDefinition
12:10:52,859 DEBUG Cascades:275 - cascading to collection: org.scra.emall.rule.RuleDefinition.ruleConditions
12:10:52,875 DEBUG Cascades:87 - cascading to saveOrUpdate()
12:10:52,875 DEBUG Cascades:237 - unsaved-value strategy NULL
12:10:52,875 DEBUG SessionImpl:1205 - saveOrUpdate() previously saved instance with id: 12
12:10:52,875 DEBUG SessionImpl:1270 - updating [org.scra.emall.rule.ConditionDefinition#12]
12:10:52,875 DEBUG Cascades:344 - done processing cascades for: org.scra.emall.rule.RuleDefinition
12:10:52,875 DEBUG SessionImpl:2113 - Flushing entities and processing referenced collections
12:10:52,875 DEBUG SessionImpl:2550 - Collection found: [org.scra.emall.rule.RuleDefinition.ruleConditions#17], was: [<unreferenced>]
12:10:52,875 DEBUG SessionImpl:2397 - Processing unreferenced collections
12:10:52,890 DEBUG SessionImpl:2408 - Scheduling collection removes/(re)creates/updates
12:10:52,890 DEBUG SessionImpl:2023 - Flushed: 1 insertions, 0 updates, 0 deletions to 1 objects
12:10:52,890 DEBUG SessionImpl:2028 - Flushed: 1 (re)creations, 0 updates, 0 removals to 1 collections
12:10:52,890 DEBUG SessionImpl:2058 - executing flush
12:10:52,890 DEBUG EntityPersister:464 - Inserting entity: org.scra.emall.rule.RuleDefinition#17
12:10:52,890 DEBUG BatcherImpl:166 - about to open: 0 open PreparedStatements, 0 open ResultSets
12:10:52,906 DEBUG SessionFactoryImpl:526 - prepared statement get: insert into rule_def (rule_name, action, creation_date, email, error_mes
sage, id) values (?, ?, ?, ?, ?, ?)
Hibernate: insert into rule_def (rule_name, action, creation_date, email, error_message, id) values (?, ?, ?, ?, ?, ?)
12:10:52,906 DEBUG SessionFactoryImpl:536 - preparing statement
12:10:52,906 DEBUG EntityPersister:366 - Dehydrating entity: org.scra.emall.rule.RuleDefinition#17
12:10:52,906 DEBUG StringType:44 - binding 'FOOBAR - TEST TEST TEST1064938249609' to parameter: 1
12:10:52,906 DEBUG StringType:44 - binding 'Exclude' to parameter: 2
12:10:52,906 DEBUG TimestampType:44 - binding '30 September 2003 12:10:49' to parameter: 3
12:10:52,906 DEBUG StringType:44 - binding 'dbryant@scra.org' to parameter: 4
12:10:52,906 DEBUG StringType:44 - binding 'What were you thinking putting that in your cart' to parameter: 5
12:10:52,906 DEBUG IntegerType:44 - binding '17' to parameter: 6
12:10:52,906 DEBUG BatcherImpl:24 - Adding to batch
12:10:52,906 DEBUG BatcherImpl:46 - Executing batch size: 1
12:10:52,921 DEBUG BatcherImpl:173 - done closing: 0 open PreparedStatements, 0 open ResultSets
12:10:52,921 DEBUG SessionFactoryImpl:554 - closing statement
12:10:52,921 DEBUG CollectionPersister:617 - Inserting collection: org.scra.emall.rule.RuleDefinition.ruleConditions#17
12:10:52,921 DEBUG BatcherImpl:166 - about to open: 0 open PreparedStatements, 0 open ResultSets
12:10:52,921 DEBUG SessionFactoryImpl:526 - prepared statement get: update rule_condition_def set rule_id=? where id=?
Hibernate: update rule_condition_def set rule_id=? where id=?
12:10:52,921 DEBUG SessionFactoryImpl:536 - preparing statement
12:10:52,921 DEBUG IntegerType:44 - binding '17' to parameter: 1
12:10:52,921 DEBUG Cascades:237 - unsaved-value strategy NULL
12:10:52,921 DEBUG IntegerType:44 - binding '12' to parameter: 2
12:10:52,921 DEBUG BatcherImpl:24 - Adding to batch
12:10:52,921 DEBUG CollectionPersister:643 - done inserting collection
12:10:52,937 DEBUG BatcherImpl:46 - Executing batch size: 1
12:10:52,937 DEBUG BatcherImpl:173 - done closing: 0 open PreparedStatements, 0 open ResultSets
12:10:52,937 DEBUG SessionFactoryImpl:554 - closing statement
12:10:52,937 DEBUG SessionImpl:2428 - post flush
12:10:52,937 DEBUG SessionImpl:435 - closing session
12:10:52,937 DEBUG SessionImpl:2930 - disconnecting session
12:10:52,937 DEBUG SessionImpl:447 - transaction completion
12:10:52,937 DEBUG SessionImpl:435 - closing session