The test case below is quite contrived, but it corresponds to the real-life problem I am running into. Assume some data is stored as BLOBs in a table in a database (here Oracle), using an unknown, proprietary data structure. Custom functions are provided in the database to convert to and from the binary format into a well-known text format. In order to insert, update, and select rows in this table using Hibernate, we configured custom SQL statements in the mapping files (loader, sql-insert, sql-update) as well as developed a custom type converter to convert the well-known text format to and from Java classes.
This works very well with one exception: When calling Session.saveOrUpdate() or Session.merge() on a detached entity that has a one-to-many relationship to another entity, which is configured with cascade="all", Hibernate doesn't seem to use the SQL loader defined in the mapping file for the related entities. Instead, Hibernate generates a statement dynamically. As our application cannot handle the BLOB columns directly we need to make sure Hibernate always uses the configured loader.
Again, this example is a contrived one. It could probably be implemented in a much easier way with Hibernate, but it was chosen as it reproduces the issue we are seeing in our application very well.
I am pretty much at wit's end. Any suggestions would be greatly appreciated.
Thanks,
Carsten
Hibernate version:
Hibernate 3.2.5.ga
Mapping documents:
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
This mapping demonstrates the use of Hibernate with all-handwritten SQL!
Note: this version is for Oracle
-->
<hibernate-mapping package="snapshot">
<class name="Order" table="TBL_ORDER">
<id name="id" type="long">
<column name="ORDER_ID" precision="12" scale="0"
not-null="true" />
<generator class="increment" />
</id>
<property name="orderDate">
<column name="ORDER_DT" length="7" not-null="true" />
</property>
<set name="lineItems" inverse="true" cascade="all">
<key>
<column name="ORDER_ID" precision="12" scale="0"
not-null="true" />
</key>
<one-to-many class="LineItem" />
<loader query-ref="loadLineItems"/>
</set>
</class>
<class name="LineItem" table="TBL_LINE_ITEM">
<composite-id name="id" class="LineItemId">
<key-many-to-one name="order" class="Order">
<column name="ORDER_ID" precision="12" scale="0"
not-null="true" />
</key-many-to-one>
<key-property name="sku">
<column name="SKU" length="8" />
</key-property>
</composite-id>
<property name="quantity">
<column name="QUANTITY" precision="4" scale="0"
not-null="true" />
</property>
<property name="units">
<column name="UNIT" length="16" not-null="true" />
<type name="snapshot.UnitUserType" />
</property>
<loader query-ref="loadLineItem"/>
<sql-insert>
insert
into
TBL_LINE_ITEM
(QUANTITY, UNIT, ORDER_ID, SKU)
values
(?, DECODE(?, 'EA', 'Einzeln', 'DZ', 'Dutzend', 'PR', 'Paar'), ?, ?)
</sql-insert>
<sql-update>
update
TBL_LINE_ITEM
set
QUANTITY = ?,
UNIT = DECODE(?, 'EA', 'Einzeln', 'DZ', 'Dutzend', 'PR', 'Paar'),
ORDER_ID = ?,
SKU = ?)
where
ORDER_ID = :id
and SKU = :sku
</sql-update>
</class>
<sql-query name="loadLineItem">
select
lineItem.ORDER_ID,
lineItem.SKU,
lineItem.QUANTITY,
DECODE(lineItem.UNITS, 'Einzeln', 'EA', 'Dutzend', 'DZ', 'Paar', 'PR') as UNIT
from
LINE_ITEM lineItem
where
LINE_ITEM.ORDER_ID=:id
</sql-query>
<sql-query name="loadLineItems">
<load-collection alias="lineItems" role="Order.lineItems" />
select
lineItem.ORDER_ID,
lineItem.SKU,
lineItem.QUANTITY,
DECODE(lineItem.UNITS, 'Einzeln', 'EA', 'Dutzend', 'DZ', 'Paar', 'PR') as UNIT
from
LINE_ITEM lineItem
where
LINE_ITEM.ORDER_ID=:id
</sql-query>
</hibernate-mapping>
jUnit test case:Code:
package snapshot.oracle;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import snapshot.LineItem;
import snapshot.LineItemId;
import snapshot.Order;
import junit.framework.TestCase;
public class OracleSnapshotTest extends TestCase {
private SessionFactory sessionFactory;
@Override
public void setUp() {
// Create the SessionFactory from hibernate.cfg.xml
sessionFactory = new Configuration().configure().buildSessionFactory();
}
@Override
public void tearDown() {
if (sessionFactory != null) {
sessionFactory.close();
}
}
public void testSaveOrUpdate() {
Session session = sessionFactory.openSession();
Order order = createOrder();
session.saveOrUpdate(order);
session.flush();
session.clear();
Order newOrder = createOrder();
newOrder.setId(order.getId());
session.saveOrUpdate(newOrder);
session.close();
}
private Order createOrder() {
Order order = new Order();
order.setOrderDate(new Date());
LineItemId liId1 = new LineItemId();
liId1.setOrder(order);
liId1.setSku("12345678");
LineItem li1 = new LineItem();
li1.setId(liId1);
li1.setQuantity(2);
li1.setUnits("Each");
order.getLineItems().add(li1);
LineItemId liId2 = new LineItemId();
liId2.setOrder(order);
liId2.setSku("87654321");
LineItem li2 = new LineItem();
li2.setId(liId2);
li2.setQuantity(1);
li2.setUnits("Each");
order.getLineItems().add(li2);
return order;
}
}
class Order:Code:
package snapshot;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
public class Order {
long id;
Date orderDate;
Set<LineItem> lineItems = new HashSet<LineItem>();
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public Date getOrderDate() {
return orderDate;
}
public void setOrderDate(Date orderDate) {
this.orderDate = orderDate;
}
public Set<LineItem> getLineItems() {
return lineItems;
}
public void setLineItems(Set<LineItem> lineItems) {
this.lineItems = lineItems;
}
}
class LineItem:Code:
package snapshot;
public class LineItem {
LineItemId id;
int quantity;
String units;
public LineItemId getId() {
return id;
}
public void setId(LineItemId id) {
this.id = id;
}
public String getUnits() {
return units;
}
public void setUnits(String units) {
this.units = units;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
}
class LineItemId:Code:
package snapshot;
import java.io.Serializable;
@SuppressWarnings("serial")
public class LineItemId implements Serializable {
Order order;
String sku;
public Order getOrder() {
return order;
}
public void setOrder(Order order) {
this.order = order;
}
public String getSku() {
return sku;
}
public void setSku(String sku) {
this.sku = sku;
}
}
class UnitUserType:Code:
package snapshot;
import java.io.Serializable;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import org.hibernate.Hibernate;
import org.hibernate.HibernateException;
import org.hibernate.usertype.UserType;
public class UnitUserType implements UserType {
public UnitUserType() {
}
public int[] sqlTypes() {
return new int[] { Types.VARCHAR };
}
@SuppressWarnings("unchecked")
public Class returnedClass() {
return String.class;
}
public boolean isMutable() {
return false;
}
public Object deepCopy(Object o) throws HibernateException {
if (o == null)
return null;
return new String(((String)o).getBytes());
}
public Object assemble(Serializable cached, Object owner)
throws HibernateException {
return cached;
}
public Serializable disassemble(Object value) throws HibernateException {
return (Serializable) value;
}
public Object replace(Object original, Object target, Object owner)
throws HibernateException {
return original;
}
public boolean equals(Object x, Object y) throws HibernateException {
return (x == y) || (x != null && y != null && (x.equals(y)));
}
public int hashCode(Object x) throws HibernateException {
return x.hashCode();
}
public Object nullSafeGet(ResultSet inResultSet, String[] names, Object o)
throws HibernateException, SQLException {
String s = (String) Hibernate.STRING.nullSafeGet(inResultSet, names[0]);
if (s == null) return null;
if (s.equals("EA")) {
return "Each";
}
else if (s.equals("DZ")) {
return "Dozen";
}
else if (s.equals("PR")) {
return "Pair";
}
else throw new HibernateException("Invalid unit");
}
public void nullSafeSet(PreparedStatement inPreparedStatement, Object o,
int i) throws HibernateException, SQLException {
String s = (String)o;
if (s == null) {
// do nothing
}
else if (s.equals("Each")) {
s = "EA";
}
else if (s.equals("Dozen")) {
s = "DZ";
}
else if (s.equals("Pair")) {
s = "PR";
}
else throw new HibernateException("Invalid unit");
inPreparedStatement.setString(i, s);
}
}
Full stack trace of any exception that occurs:The exception below is actually generated by our code to indicate that Hibernate did not use the custom SQL load statement defined for the LineItem class:
Code:
org.hibernate.HibernateException: Invalid unit
at snapshot.UnitUserType.nullSafeGet(UnitUserType.java:72)
at org.hibernate.type.CustomType.nullSafeGet(CustomType.java:105)
at org.hibernate.type.AbstractType.hydrate(AbstractType.java:81)
at org.hibernate.persister.entity.AbstractEntityPersister.getDatabaseSnapshot(AbstractEntityPersister.java:1034)
at org.hibernate.engine.StatefulPersistenceContext.getDatabaseSnapshot(StatefulPersistenceContext.java:246)
at org.hibernate.engine.ForeignKeys.isTransient(ForeignKeys.java:189)
at org.hibernate.event.def.AbstractSaveEventListener.getEntityState(AbstractSaveEventListener.java:512)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:80)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:507)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:499)
at org.hibernate.engine.CascadingAction$5.cascade(CascadingAction.java:218)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:268)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:216)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169)
at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:296)
at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:242)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:219)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169)
at org.hibernate.engine.Cascade.cascade(Cascade.java:130)
at org.hibernate.engine.Cascade.cascade(Cascade.java:97)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.cascadeOnUpdate(DefaultSaveOrUpdateEventListener.java:357)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performUpdate(DefaultSaveOrUpdateEventListener.java:329)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsDetached(DefaultSaveOrUpdateEventListener.java:223)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:89)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:507)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:499)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:495)
at snapshot.oracle.OracleSnapshotTest.testSaveOrUpdate(OracleSnapshotTest.java:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Name and version of the database you are using:Oracle10g R2 (10.2.0.3.0)
The generated SQL (show_sql=true):Code:
select
lineitem_.ORDER_ID,
lineitem_.SKU,
lineitem_.QUANTITY as QUANTITY1_,
lineitem_.UNIT as UNIT1_
from
TBL_LINE_ITEM lineitem_
where
lineitem_.ORDER_ID=?
and lineitem_.SKU=?
Debug level Hibernate log excerpt:
[code]0 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.2.5
0 [main] INFO org.hibernate.cfg.Environment - loaded properties from resource hibernate.properties: {hibernate.connection.driver_class=oracle.jdbc.driver.OracleDriver, hibernate.max_fetch_depth=1, hibernate.dialect=org.hibernate.dialect.Oracle10gDialect, hibernate.jdbc.use_streams_for_binary=true, hibernate.format_sql=true, hibernate.connection.username=testuser, hibernate.hbm2ddl.auto=create-drop, hibernate.connection.url=jdbc:oracle:thin:@localhost:1521:ORCL, hibernate.bytecode.use_reflection_optimizer=false, hibernate.show_sql=true, hibernate.connection.password=****, hibernate.jdbc.batch_versioned_data=true, hibernate.connection.pool_size=1}
0 [main] INFO org.hibernate.cfg.Environment - using java.io streams to persist binary types
0 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : cglib
0 [main] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
47 [main] INFO org.hibernate.cfg.Configuration - configuring from resource: /hibernate.cfg.xml
47 [main] INFO org.hibernate.cfg.Configuration - Configuration resource: /hibernate.cfg.xml
78 [main] DEBUG org.hibernate.util.DTDEntityResolver - trying to resolve system-id [http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd]
78 [main] DEBUG org.hibernate.util.DTDEntityResolver - recognized hibernate namespace; attempting to resolve on classpath under org/hibernate/
78 [main] DEBUG org.hibernate.util.DTDEntityResolver - located [http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd] in classpath
109 [main] DEBUG org.hibernate.cfg.Configuration - null<-org.dom4j.tree.DefaultAttribute@d1e89e [Attribute: name resource value "snapshot/oracle/Mappings.hbm.xml"]
109 [main] INFO org.hibernate.cfg.Configuration - Reading mappings from resource : snapshot/oracle/Mappings.hbm.xml
109 [main] DEBUG org.hibernate.util.DTDEntityResolver - trying to resolve system-id [http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd]
109 [main] DEBUG org.hibernate.util.DTDEntityResolver - recognized hibernate namespace; attempting to resolve on classpath under org/hibernate/
109 [main] DEBUG org.hibernate.util.DTDEntityResolver - located [http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd] in classpath
203 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: snapshot.Order -> TBL_ORDER
203 [main] DEBUG org.hibernate.cfg.HbmBinder - Mapped property: id -> ORDER_ID
219 [main] DEBUG org.hibernate.cfg.HbmBinder - Mapped property: orderDate -> ORDER_DT
219 [main] DEBUG org.hibernate.cfg.HbmBinder - Mapped property: lineItems
219 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: snapshot.LineItem -> TBL_LINE_ITEM
265 [main] DEBUG org.hibernate.cfg.HbmBinder - Mapped property: order -> ORDER_ID
265 [main] DEBUG org.hibernate.cfg.HbmBinder - Mapped property: sku -> SKU
265 [main] DEBUG org.hibernate.cfg.HbmBinder - Mapped property: id -> ORDER_ID, SKU
265 [main] DEBUG org.hibernate.cfg.HbmBinder - Mapped property: quantity -> QUANTITY
265 [main] DEBUG org.hibernate.cfg.HbmBinder - Mapped property: units -> UNIT
265 [main] INFO org.hibernate.cfg.Configuration - Configured SessionFactory: null
265 [main] DEBUG org.hibernate.cfg.Configuration - properties: {java.runtime.name=Java(TM) 2 Runtime Environment, Standard Edition, hibernate.connection.password=secret, sun.boot.library.path=C:\Program Files\Java\jdk1.5.0_12\jre\bin, java.vm.version=1.5.0_12-b04, hibernate.connection.username=testuser, java.vm.vendor=Sun Microsystems Inc., java.vendor.url=http://java.sun.com/, path.separator=;, java.vm.name=Java HotSpot(TM) Client VM, file.encoding.pkg=sun.io, user.country=US, sun.java.launcher=SUN_STANDARD, sun.os.patch.level=Service Pack 2, java.vm.specification.name=Java Virtual Machine Specification, user.dir=C:\TEMP\hibernate-snapshot-error, java.runtime.version=1.5.0_12-b04, java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment, java.endorsed.dirs=C:\Program Files\Java\jdk1.5.0_12\jre\lib\endorsed, os.arch=x86, java.io.tmpdir=C:\DOCUME~1\cars3788\LOCALS~1\Temp\, line.separator=
, java.vm.specification.vendor=Sun Microsystems Inc., user.variant=, os.name=Windows XP, hibernate.jdbc.batch_versioned_data=true, sun.jnu.encoding=Cp1252, java.library.path=C:\Program Files\Java\jdk1.5.0_12\bin;.;C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files\Java\jre1.5.0_12\bin\client;C:\Program Files\Java\jre1.5.0_12\bin;C:\oracle\product\10.2.0\db_1\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Java\jdk1.5.0_12\bin;C:\Program Files\Java\apache-maven-2.0.8\bin;C:\Program Files\QuickTime\QTSystem\, java.specification.name=Java Platform API Specification, java.class.version=49.0, hibernate.connection.pool_size=1, sun.management.compiler=HotSpot Client Compiler, os.version=5.1, user.home=C:\Documents and Settings\cars3788, user.timezone=, java.awt.printerjob=sun.awt.windows.WPrinterJob, file.encoding=Cp1252, java.specification.version=1.5, hibernate.format_sql=true, hibernate.connection.driver_class=oracle.jdbc.driver.OracleDriver, java.class.path=C:\TEMP\hibernate-snapshot-error\bin;C:\TEMP\hibernate-snapshot-error\lib\antlr-2.7.6.jar;C:\TEMP\hibernate-snapshot-error\lib\asm.jar;C:\TEMP\hibernate-snapshot-error\lib\asm-attrs.jar;C:\TEMP\hibernate-snapshot-error\lib\cglib-2.1.3.jar;C:\TEMP\hibernate-snapshot-error\lib\commons-collections-2.1.1.jar;C:\TEMP\hibernate-snapshot-error\lib\commons-logging-1.0.4.jar;C:\TEMP\hibernate-snapshot-error\lib\dom4j-1.6.1.jar;C:\TEMP\hibernate-snapshot-error\lib\hibernate3.jar;C:\TEMP\hibernate-snapshot-error\lib\jta.jar;C:\TEMP\hibernate-snapshot-error\lib\junit-3.8.1.jar;C:\TEMP\hibernate-snapshot-error\lib\log4j-1.2.11.jar;C:\oracle\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar;/C:/Program Files/Java/eclipse/configuration/org.eclipse.osgi/bundles/192/1/.cp/;/C:/Program Files/Java/eclipse/configuration/org.eclipse.osgi/bundles/190/1/.cp/, user.name=cars3788, hibernate.bytecode.use_reflection_optimizer=false, hibernate.show_sql=true, java.vm.specification.version=1.0, java.home=C:\Program Files\Java\jdk1.5.0_12\jre, sun.arch.data.model=32, hibernate.dialect=org.hibernate.dialect.Oracle10gDialect, hibernate.connection.url=jdbc:oracle:thin:@localhost:1521:ORCL, user.language=en, java.specification.vendor=Sun Microsystems Inc., awt.toolkit=sun.awt.windows.WToolkit, java.vm.info=mixed mode, hibernate.jdbc.use_streams_for_binary=true, java.version=1.5.0_12, java.ext.dirs=C:\Program Files\Java\jdk1.5.0_12\jre\lib\ext, sun.boot.class.path=C:\Program Files\Java\jdk1.5.0_12\jre\lib\rt.jar;C:\Program Files\Java\jdk1.5.0_12\jre\lib\i18n.jar;C:\Program Files\Java\jdk1.5.0_12\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.5.0_12\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.5.0_12\jre\lib\jce.jar;C:\Program Files\Java\jdk1.5.0_12\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.5.0_12\jre\classes, java.vendor=Sun Microsystems Inc., file.separator=\, hibernate.hbm2ddl.auto=create-drop, java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport.cgi, sun.io.unicode.encoding=UnicodeLittle, sun.cpu.endian=little, hibernate.max_fetch_depth=1, sun.desktop=windows, sun.cpu.isalist=pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386 i86}
265 [main] DEBUG org.hibernate.cfg.Configuration - Preparing to build session factory with filters : {}
265 [main] DEBUG org.hibernate.cfg.Configuration - processing extends queue
265 [main] DEBUG org.hibernate.cfg.Configuration - processing collection mappings
265 [main] DEBUG org.hibernate.cfg.CollectionSecondPass - Second pass for collection: snapshot.Order.lineItems
265 [main] INFO org.hibernate.cfg.HbmBinder - Mapping collection: snapshot.Order.lineItems -> TBL_LINE_ITEM
265 [main] DEBUG org.hibernate.cfg.CollectionSecondPass - Mapped collection key: ORDER_ID, one-to-many: snapshot.LineItem
265 [main] DEBUG org.hibernate.cfg.Configuration - processing native query and ResultSetMapping mappings
281 [main] DEBUG org.hibernate.cfg.NamedSQLQuerySecondPass - Named SQL query: loadLineItem -> select
lineItem.ORDER_ID,
lineItem.SKU,
lineItem.QUANTITY,
DECODE(lineItem.UNITS, 'Einzeln', 'EA', 'Dutzend', 'DZ', 'Paar', 'PR') as UNIT
from
LINE_ITEM lineItem
where
LINE_ITEM.ORDER_ID=:id
281 [main] DEBUG org.hibernate.cfg.NamedSQLQuerySecondPass - Named SQL query: loadLineItems -> select
lineItem.ORDER_ID,
lineItem.SKU,
lineItem.QUANTITY,
DECODE(lineItem.UNITS, 'Einzeln', 'EA', 'Dutzend', 'DZ', 'Paar', 'PR') as UNIT
from
LINE_ITEM lineItem
where
LINE_ITEM.ORDER_ID=:id
281 [main] DEBUG org.hibernate.cfg.Configuration - processing association property references
281 [main] DEBUG org.hibernate.cfg.Configuration - processing foreign key constraints
281 [main] DEBUG org.hibernate.cfg.Configuration - resolving reference to class: snapshot.Order
297 [main] WARN org.hibernate.mapping.RootClass - composite-id class does not override equals(): snapshot.LineItemId
297 [main] WARN org.hibernate.mapping.RootClass - composite-id class does not override hashCode(): snapshot.LineItemId
312 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Using Hibernate built-in connection pool (not for production use!)
312 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Hibernate connection pool size: 1
312 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - autocommit mode: false
312 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - using driver: oracle.jdbc.driver.OracleDriver at URL: jdbc:oracle:thin:@localhost:1521:ORCL
312 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - connection properties: {user=testuser, password=secret}
312 [main] DEBUG org.hibernate.connection.DriverManagerConnectionProvider - total checked-out connections: 0
312 [main] DEBUG org.hibernate.connection.DriverManagerConnectionProvider - opening new JDBC connection
594 [main] DEBUG org.hibernate.connection.DriverManagerConnectionProvider - created connection to: jdbc:oracle:thin:@localhost:1521:ORCL, Isolation Level: 2
594 [main] DEBUG org.hibernate.connection.DriverManagerConnectionProvider - returning connection to pool, pool size: 1
609 [main] INFO org.hibernate.dialect.Dialect - Using dialect: org.hibernate.dialect.Oracle10gDialect
609 [main] INFO org.hibernate.transaction.TransactionFactoryFactory - Using default transaction strategy (direct JDBC transactions)
609 [main] INFO org.hibernate.transaction.TransactionManagerLookupFactory - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
625 [main] INFO org.hibernate.hql.ast.ASTQueryTranslatorFactory - Using ASTQueryTranslatorFactory
625 [main] DEBUG org.hibernate.exception.SQLExceptionConverterFactory - Using dialect defined converter
640 [main] INFO org.hibernate.impl.SessionFactoryImpl - building session factory
640 [main] DEBUG org.hibernate.impl.SessionFactoryImpl - Session factory constructed with filter configurations : {}
640 [main] DEBUG org.hibernate.impl.SessionFactoryImpl - instantiating session factory with properties: {java.runtime.name=Java(TM) 2 Runtime Environment, Standard Edition, hibernate.connection.password=secret, sun.boot.library.path=C:\Program Files\Java\jdk1.5.0_12\jre\bin, java.vm.version=1.5.0_12-b04, hibernate.connection.username=testuser, java.vm.vendor=Sun Microsystems Inc., java.vendor.url=http://java.sun.com/, path.separator=;, java.vm.name=Java HotSpot(TM) Client VM, file.encoding.pkg=sun.io, user.country=US, sun.java.launcher=SUN_STANDARD, sun.os.patch.level=Service Pack 2, java.vm.specification.name=Java Virtual Machine Specification, user.dir=C:\TEMP\hibernate-snapshot-error, java.runtime.version=1.5.0_12-b04, java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment, java.endorsed.dirs=C:\Program Files\Java\jdk1.5.0_12\jre\lib\endorsed, os.arch=x86, java.io.tmpdir=C:\DOCUME~1\cars3788\LOCALS~1\Temp\, line.separator=
, java.vm.specification.vendor=Sun Microsystems Inc., user.variant=, os.name=Windows XP, hibernate.jdbc.batch_versioned_data=true, sun.jnu.encoding=Cp1252, java.library.path=C:\Program Files\Java\jdk1.5.0_12\bin;.;C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files\Java\jre1.5.0_12\bin\client;C:\Program Files\Java\jre1.5.0_12\bin;C:\oracle\product\10.2.0\db_1\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Java\jdk1.5.0_12\bin;C:\Program Files\Java\apache-maven-2.0.8\bin;C:\Program Files\QuickTime\QTSystem\, java.specification.name=Java Platform API Specification, java.class.version=49.0, hibernate.connection.pool_size=1, sun.management.compiler=HotSpot Client Compiler, os.version=5.1, user.home=C:\Documents and Settings\cars3788, user.timezone=, java.awt.printerjob=sun.awt.windows.WPrinterJob, java.specification.version=1.5, file.encoding=Cp1252, hibernate.format_sql=true, hibernate.connection.driver_class=oracle.jdbc.driver.OracleDriver, user.name=cars3788, java.class.path=C:\TEMP\hibernate-snapshot-error\bin;C:\TEMP\hibernate-snapshot-error\lib\antlr-2.7.6.jar;C:\TEMP\hibernate-snapshot-error\lib\asm.jar;C:\TEMP\hibernate-snapshot-error\lib\asm-attrs.jar;C:\TEMP\hibernate-snapshot-error\lib\cglib-2.1.3.jar;C:\TEMP\hibernate-snapshot-error\lib\commons-collections-2.1.1.jar;C:\TEMP\hibernate-snapshot-error\lib\commons-logging-1.0.4.jar;C:\TEMP\hibernate-snapshot-error\lib\dom4j-1.6.1.jar;C:\TEMP\hibernate-snapshot-error\lib\hibernate3.jar;C:\TEMP\hibernate-snapshot-error\lib\jta.jar;C:\TEMP\hibernate-snapshot-error\lib\junit-3.8.1.jar;C:\TEMP\hibernate-snapshot-error\lib\log4j-1.2.11.jar;C:\oracle\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar;/C:/Program Files/Java/eclipse/configuration/org.eclipse.osgi/bundles/192/1/.cp/;/C:/Program Files/Java/eclipse/configuration/org.eclipse.osgi/bundles/190/1/.cp/, hibernate.bytecode.use_reflection_optimizer=false, hibernate.show_sql=true, java.vm.specification.version=1.0, sun.arch.data.model=32, java.home=C:\Program Files\Java\jdk1.5.0_12\jre, hibernate.connection.url=jdbc:oracle:thin:@localhost:1521:ORCL, hibernate.dialect=org.hibernate.dialect.Oracle10gDialect, java.specification.vendor=Sun Microsystems Inc., user.language=en, awt.toolkit=sun.awt.windows.WToolkit, java.vm.info=mixed mode, java.version=1.5.0_12, hibernate.jdbc.use_streams_for_binary=true, java.ext.dirs=C:\Program Files\Java\jdk1.5.0_12\jre\lib\ext, sun.boot.class.path=C:\Program Files\Java\jdk1.5.0_12\jre\lib\rt.jar;C:\Program Files\Java\jdk1.5.0_12\jre\lib\i18n.jar;C:\Program Files\Java\jdk1.5.0_12\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.5.0_12\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.5.0_12\jre\lib\jce.jar;C:\Program Files\Java\jdk1.5.0_12\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.5.0_12\jre\classes, java.vendor=Sun Microsystems Inc., file.separator=\, java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport.cgi, hibernate.hbm2ddl.auto=create-drop, sun.cpu.endian=little, sun.io.unicode.encoding=UnicodeLittle, sun.desktop=windows, hibernate.max_fetch_depth=1, sun.cpu.isalist=pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386 i86}
797 [main] DEBUG org.hibernate.persister.entity.AbstractEntityPersister - Static SQL for entity: snapshot.LineItem
797 [main] DEBUG org.hibernate.persister.entity.AbstractEntityPersister - Version select: select ORDER_ID, SKU from TBL_LINE_ITEM where ORDER_ID =? and SKU =?
797 [main] DEBUG org.hibernate.persister.entity.AbstractEntityPersister - Snapshot select: select lineitem_.ORDER_ID, lineitem_.SKU, lineitem_.QUANTITY as QUANTITY1_, lineitem_.UNIT as UNIT1_ from TBL_LINE_ITEM lineitem_ where lineitem_.ORDER_ID=? and lineitem_.SKU=?
797 [main] DEBUG org.hibernate.persister.entity.AbstractEntityPersister - Insert 0: insert into TBL_LINE_ITEM (QUANTITY, UNIT, ORDER_ID, SKU) values (?, DECODE(?, 'EA', 'Einzeln', 'DZ', 'Dutzend', 'PR', 'Paar'), ?, ?)
797 [main] DEBUG org.hibernate.persister.entity.AbstractEntityPersister - Update 0: update TBL_LINE_ITEM set QUANTITY = ?, UNIT = DECODE(?, 'EA', 'Einzeln', 'DZ', 'Dutzend', 'PR', 'Paar'), ORDER_ID = ?, SKU = ?) where ORDER_ID = :id and SKU = :sku
797 [main] DEBUG org.hibernate.persister.entity.AbstractEntityPersister - Delete 0: delete from TBL_LINE_ITEM where ORDER_ID=? and SKU=?
812 [main] DEBUG org.hibernate.persister.entity.AbstractEntityPersister - Static SQL for entity: snapshot.Order
812 [main] DEBUG org.hibernate.persister.entity.AbstractEntityPersister - Version select: select ORDER_ID from TBL_ORDER where ORDER_ID =?
812 [main] DEBUG org.hibernate.persister.entity.AbstractEntityPersister - Snapshot select: select order_.ORDER_ID, order_.ORDER_DT as ORDER2_0_ from TBL_ORDER order_ where order_.ORDER_ID=?
812 [main] DEBUG org.hibernate.persister.entity.AbstractEntityPersister - Insert 0: insert into TBL_ORDER (ORDER_DT, ORDER_ID) values (?, ?)
812 [main] DEBUG org.hibernate.persister.entity.AbstractEntityPersister - Update 0: update TBL_ORDER set ORDER_DT=? where ORDER_ID=?
812 [main] DEBUG org.hibernate.persister.entity.AbstractEntityPersister - Delete 0: delete from TBL_ORDER where ORDER_ID=?
812 [main] DEBUG org.hibernate.persister.collection.AbstractCollectionPersister - Static SQL for collection: snapshot.Order.lineItems
812 [main] DEBUG org.hibernate.persister.collection.AbstractCollectionPersister - Row insert: update TBL_LINE_ITEM set ORDER_ID=? where ORDER_ID=? and SKU=?
812 [main] DEBUG org.hibernate.persister.collection.AbstractCollectionPersister - Row delete: update TBL_LINE_ITEM set ORDER_ID=null where ORDER_ID=? and ORDER_ID=? and SKU=?
812 [main] DEBUG org.hibernate.persister.collection.AbstractCollectionPersister - One-shot delete: update TBL_LINE_ITEM set ORDER_ID=null where ORDER_ID=?
844 [main] DEBUG org.hibernate.loader.entity.EntityLoader - Static select for entity snapshot.LineItem: select lineitem0_.ORDER_ID as ORDER1_1_0_, lineitem0_.SKU as SKU1_0_, lineitem0_.QUANTITY as QUANTITY1_0_, lineitem0_.UNIT as UNIT1_0_ from TBL_LINE_ITEM lineitem0_ where lineitem0_.ORDER_ID=? and lineitem0_.SKU=?
844 [main] DEBUG org.hibernate.loader.entity.EntityLoader - Static select for entity snapshot.LineItem: select lineitem0_.ORDER_ID as ORDER1_1_0_, lineitem0_.SKU as SKU1_0_, lineitem0_.QUANTITY as QUANTITY1_0_, lineitem0_.UNIT as UNIT1_0_ from TBL_LINE_ITEM lineitem0_ where lineitem0_.ORDER_ID=? and lineitem0_.SKU=?
844 [main] DEBUG org.hibernate.loader.entity.EntityLoader - Static select for entity snapshot.LineItem: select lineitem0_.ORDER_ID as ORDER1_1_0_, lineitem0_.SKU as SKU1_0_, lineitem0_.QUANTITY as QUANTITY1_0_, lineitem0_.UNIT as UNIT1_0_ from TBL_LINE_ITEM lineitem0_ where lineitem0_.ORDER_ID=? and lineitem0_.SKU=? for update
844 [main] DEBUG org.hibernate.loader.entity.EntityLoader - Static select for entity snapshot.LineItem: select lineitem0_.ORDER_ID as ORDER1_1_0_, lineitem0_.SKU as SKU1_0_, lineitem0_.QUANTITY as QUANTITY1_0_, lineitem0_.UNIT as UNIT1_0_ from TBL_LINE_ITEM lineitem0_ where lineitem0_.ORDER_ID=? and lineitem0_.SKU=? for update nowait
844 [main] DEBUG org.hibernate.loader.entity.EntityLoader - Static select for entity snapshot.LineItem: select lineitem0_.ORDER_ID as ORDER1_1_0_, lineitem0_.SKU as SKU1_0_, lineitem0_.QUANTITY as QUANTITY1_0_, lineitem0_.UNIT as UNIT1_0_ from TBL_LINE_ITEM lineitem0_ where lineitem0_.ORDER_ID=? and lineitem0_.SKU=? for update nowait
844 [main] DEBUG org.hibernate.loader.entity.EntityLoader - Static select for action ACTION_MERGE on entity snapshot.LineItem: select lineitem0_.ORDER_ID as ORDER1_1_0_, lineitem0_.SKU as SKU1_0_, lineitem0_.QUANTITY as QUANTITY1_0_, lineitem0_.UNIT as UNIT1_0_ from TBL_LINE_ITEM lineitem0_ where lineitem0_.ORDER_ID=? and lineitem0_.SKU=?
844 [main] DEBUG org.hibernate.loader.entity.EntityLoader - Static select for action ACTION_REFRESH on entity snapshot.LineItem: select lineitem0_.ORDER_ID as ORDER1_1_0_, lineitem0_.SKU as SKU1_0_, lineitem0_.QUANTITY as QUANTITY1_0_, lineitem0_.UNIT as UNIT1_0_ from TBL_LINE_ITEM lineitem0_ where lineitem0_.ORDER_ID=? and lineitem0_.SKU=?
844 [main] DEBUG org.hibernate.loader.entity.EntityLoader - Static select for entity snapshot.Order: select order0_.ORDER_ID as ORDER1_0_0_, order0_.ORDER_DT as ORDER2_0_0_ from TBL_ORDER order0_ where order0_.ORDER_ID=?
844 [main] DEBUG org.hibernate.loader.entity.EntityLoader - Static select for entity snapshot.Order: select order0_.ORDER_ID as ORDER1_0_0_, order0_.ORDER_DT as ORDER2_0_0_ from TBL_ORDER order0_ where order0_.ORDER_ID=?
844 [main] DEBUG org.hibernate.loader.entity.EntityLoader - Static select for entity snapshot.Order: select order0_.ORDER_ID as ORDER1_0_0_, order0_.ORDER_DT as ORDER2_0_0_ from TBL_ORDER order0_ where order0_.ORDER_ID=? for update
844 [main] DEBUG org.hibernate.loader.entity.EntityLoader - Static select for entity snapshot.Order: select order0_.ORDER_ID as ORDER1_0_0_, order0_.ORDER_DT as ORDER2_0_0_ from TBL_ORDER order0_ where order0_.ORDER_ID=? for update nowait
844 [main] DEBUG org.hibernate.loader.entity.EntityLoader - Static select for entity snapshot.Order: select order0_.ORDER_ID as ORDER1_0_0_, order0_.ORDER_DT as ORDER2_0_0_ from TBL_ORDER order0_ where order0_.ORDER_ID=? for update nowait
844 [main] DEBUG org.hibernate.loader.entity.EntityLoader - Static select for action ACTION_MERGE on entity snapshot.Order: select order0_.ORDER_ID as ORDER1_0_1_, order0_.ORDER_DT as ORDER2_0_1_, lineitems1_.ORDER_ID as ORDER1_3_, lineitems1_.SKU as SKU3_, lineitems1_.ORDER_ID as ORDER1_1_0_, lineitems1_.SKU as SKU1_0_, lineitems1_.QUANTITY as QUANTITY1_0_, lineitems1_.UNIT as UNIT1_0_ from TBL_ORDER order0_ left outer join TBL_LINE_ITEM lineitems1_ on order0_.ORDER_ID=lineitems1_.ORDER_ID where order0_.ORDER_ID=?
844 [main] DEBUG org.hibernate.loader.entity.EntityLoader - Static select for action ACTION_REFRESH on entity snapshot.Order: select order0_.ORDER_ID as ORDER1_0_1_, order0_.ORDER_DT as ORDER2_0_1_, lineitems1_.ORDER_ID as ORDER1_3_, lineitems1_.SKU as SKU3_, lineitems1_.ORDER_ID as ORDER1_1_0_, lineitems1_.SKU as SKU1_0_, lineitems1_.QUANTITY as QUANTITY1_0_, lineitems1_.UNIT as UNIT1_0_ from TBL_ORDER order0_ left outer join TBL_LINE_ITEM lineitems1_ on order0_.ORDER_ID=lineitems1_.ORDER_ID where order0_.ORDER_ID=?
859 [main] DEBUG org.hibernate.impl.SessionFactoryObjectFactory - initializing class SessionFactoryObjectFactory
859 [main] DEBUG org.hibernate.impl.SessionFactoryObjectFactory - registered: 8a8fb3d91833cf8f011833cf90260000 (unnamed)
859 [main] INFO org.hibernate.impl.SessionFactoryObjectFactory - Not binding factory to JNDI, no JNDI name configured
859 [main] DEBUG org.hibernate.impl.SessionFactoryImpl - instantiated session factory
859 [main] DEBUG org.hibernate.cfg.Configuration - processing extends queue
859 [main] DEBUG org.hibernate.cfg.Configuration - processing collection mappings
859 [main] DEBUG org.hibernate.cfg.Configuration - processing native query and ResultSetMapping mappings
859 [main] DEBUG org.hibernate.cfg.Configuration - processing association property references
859 [main] DEBUG org.hibernate.cfg.Configuration - processing foreign key constraints
859 [main] DEBUG org.hibernate.cfg.Configuration - resolving reference to class: snapshot.Order
859 [main] DEBUG org.hibernate.cfg.Configuration - processing extends queue
859 [main] DEBUG org.hibernate.cfg.Configuration - processing collection mappings
859 [main] DEBUG org.hibernate.cfg.Configuration - processing native query and ResultSetMapping mappings
859 [main] DEBUG org.hibernate.cfg.Configuration - processing association property references
859 [main] DEBUG org.hibernate.cfg.Configuration - processing foreign key constraints
859 [main] DEBUG org.hibernate.cfg.Configuration - resolving reference to class: snapshot.Order
859 [main] INFO org.hibernate.tool.hbm2ddl.SchemaExport - Running hbm2ddl schema export
859 [main] DEBUG org.hibernate.tool.hbm2ddl.SchemaExport - import file not found: /import.sql
859 [main] INFO org.hibernate.tool.hbm2ddl.SchemaExport - exporting generated schema to database
859 [main] DEBUG org.hibernate.connection.DriverManagerConnectionProvider - total checked-out connections: 0
859 [main] DEBUG org.hibernate.connection.DriverManagerConnectionProvider - using pooled JDBC connection, pool size: 0
922 [main] DEBUG org.hibernate.tool.hbm2ddl.SchemaExport -
drop table TBL_LINE_ITEM cascade constraints
3265 [main] DEBUG org.hibernate.tool.hbm2ddl.SchemaExport -
drop table TBL_ORDER cascade constraints
3359 [main] DEBUG org.hibernate.tool.hbm2ddl.SchemaExport -
create table TBL_LINE_ITEM (
ORDER_ID number(19,0) not null,
SKU varchar2(8 char) not null,
QUANTITY number(10,0) not null,
UNIT varchar2(16 char) not null,
primary key (ORDER_ID, SKU)
)
3781 [main] DEBUG org.hibernate.tool.hbm2ddl.SchemaExport -
create table TBL_ORDER (
ORDER_ID number(19,0) not null,
ORDER_DT timestamp not null,
primary key (ORDER_ID)
)
3828 [main] DEBUG org.hibernate.tool.hbm2ddl.SchemaExport -
alter table TBL_LINE_ITEM
add constraint FK56B92D1D99ABF630
foreign key (ORDER_ID)
references TBL_ORDER
3953 [main] INFO org.hibernate.tool.hbm2ddl.SchemaExport - schema export complete
3953 [main] DEBUG org.hibernate.connection.DriverManagerConnectionProvider - returning connection to pool, pool size: 1
3953 [main] DEBUG org.hibernate.cfg.Configuration - processing extends queue
3953 [main] DEBUG org.hibernate.cfg.Configuration - processing collection mappings
3953 [main] DEBUG org.hibernate.cfg.Configuration - processing native query and ResultSetMapping mappings
3953 [main] DEBUG org.hibernate.cfg.Configuration - processing association property references
3953 [main] DEBUG org.hibernate.cfg.Configuration - processing foreign key constraints
3953 [main] DEBUG org.hibernate.cfg.Configuration - resolving reference to class: snapshot.Order
3953 [main] DEBUG org.hibernate.cfg.Configuration - processing extends queue
3953 [main] DEBUG org.hibernate.cfg.Configuration - processing collection mappings
3953 [main] DEBUG org.hibernate.cfg.Configuration - processing native query and ResultSetMapping mappings
3953 [main] DEBUG org.hibernate.cfg.Configuration - processing association property references
3953 [main] DEBUG org.hibernate.cfg.Configuration - processing foreign key constraints
3953 [main] DEBUG org.hibernate.cfg.Configuration - resolving reference to class: snapshot.Order
3953 [main] DEBUG org.hibernate.impl.SessionFactoryImpl - Checking 0 named HQL queries
3953 [main] DEBUG org.hibernate.impl.SessionFactoryImpl - Checking 2 named SQL queries
3953 [main] DEBUG org.hibernate.impl.SessionFactoryImpl - Checking named SQL query: loadLineItem
3953 [main] DEBUG org.hibernate.engine.query.QueryPlanCache - unable to locate native-sql query plan in cache; generating (select
lineItem.ORDER_ID,
lineItem.SKU,
lineItem.QUANTITY,
DECODE(lineItem.UNITS, 'Einzeln', 'EA', 'Dutzend', 'DZ', 'Paar', 'PR') as UNIT
from
LINE_ITEM lineItem
where
LINE_ITEM.ORDER_ID=:id)
4031 [main] DEBUG org.hibernate.loader.custom.sql.SQLCustomQuery - starting processing of sql query [select
lineItem.ORDER_ID,
lineItem.SKU,
lineItem.QUANTITY,
DECODE(lineItem.UNITS, 'Einzeln', 'EA', 'Dutzend', 'DZ', 'Paar', 'PR') as UNIT
from
LINE_ITEM lineItem
where
LINE_ITEM.ORDER_ID=:id]
4047 [main] DEBUG org.hibernate.impl.SessionFactoryImpl - Checking named SQL query: loadLineItems
4047 [main] DEBUG org.hibernate.engine.query.QueryPlanCache - unable to locate native-sql query plan in cache; generating (select
lineItem.ORDER_ID,
lineItem.SKU,
lineItem.QUANTITY,
DECODE(lineItem.UNITS, 'Einzeln', 'EA', 'Dutzend', 'DZ', 'Paar', 'PR') as UNIT
from
LINE_ITEM lineItem
where
LINE_ITEM.ORDER_ID=:id)
4047 [main] DEBUG org.hibernate.loader.custom.sql.SQLCustomQuery - starting processing of sql query [select
lineItem.ORDER_ID,
lineItem.SKU,
lineItem.QUANTITY,
DECODE(lineItem.UNITS, 'Einzeln', 'EA', 'Dutzend', 'DZ', 'Paar', 'PR') as UNIT
from
LINE_ITEM lineItem
where
LINE_ITEM.ORDER_ID=:id]
4047 [main] DEBUG org.hibernate.loader.custom.sql.SQLQueryReturnProcessor - mapping alias [lineItems] to collection-suffix [0__]
4047 [main] DEBUG org.hibernate.loader.custom.sql.SQLQueryReturnProcessor - mapping alias [lineItems] to entity-suffix [0_]
4125 [main] DEBUG org.hibernate.impl.SessionImpl - opened session at timestamp: 12034600869
4125 [main] DEBUG org.hibernate.engine.IdentifierValue - id unsaved-value: 0
4125 [main] DEBUG org.hibernate.event.def.AbstractSaveEventListener - transient instance of: snapshot.Order
4140 [main] DEBUG org.hibernate.event.def.DefaultSaveOrUpdateEventListener - saving transient instance
4140 [main] DEBUG org.hibernate.id.IncrementGenerator - fetching initial value: select max(ORDER_ID) from TBL_ORDER
4140 [main] DEBUG org.hibernate.jdbc.AbstractBatcher - about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
4140 [main] DEBUG org.hibernate.jdbc.ConnectionManager - opening JDBC connection
4140 [main] DEBUG org.hibernate.connection.DriverManagerConnectionProvider - total checked-out connections: 0
4140 [main] DEBUG org.hibernate.connection.DriverManagerConnectionProvider - using pooled JDBC connection, pool size: 0
4140 [main] DEBUG org.hibernate.SQL -
select
max(ORDER_ID)
from
TBL_ORDER
Hibernate:
select
max(ORDER_ID)
from
TBL_ORDER
4140 [main] DEBUG org.hibernate.jdbc.AbstractBatcher - preparing statement
4265 [main] DEBUG org.hibernate.id.IncrementGenerator - first free id: 1
4265 [main] DEBUG org.hibernate.jdbc.AbstractBatcher - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
4265 [main] DEBUG org.hibernate.jdbc.AbstractBatcher - closing statement
4265 [main] DEBUG org.hibernate.event.def.AbstractSaveEventListener - generated identifier: 1, using strategy: org.hibernate.id.IncrementGenerator
4265 [main] DEBUG org.hibernate.event.def.AbstractSaveEventListener - saving [snapshot.Order#1]
4265 [main] DEBUG org.hibernate.engine.Cascade - processing cascade ACTION_SAVE_UPDATE for: snapshot.Order
4265 [main] DEBUG org.hibernate.engine.Cascade - done processing cascade ACTION_SAVE_UPDATE for: snapshot.Order
4297 [main] DEBUG org.hibernate.event.def.WrapVisitor - Wrapped collection in role: snapshot.Order.lineItems
4297 [main] DEBUG org.hibernate.engine.Cascade - processing cascade ACTION_SAVE_UPDATE for: snapshot.Order
4297 [main] DEBUG org.hibernate.engine.Cascade - cascade ACTION_SAVE_UPDATE for collection: snapshot.Order.lineItems
4297 [main] DEBUG org.hibernate.engine.CascadingAction - cascading to saveOrUpdate: snapshot.LineItem
4297 [main] DEBUG org.hibernate.engine.IdentifierValue - id unsaved-value strategy UNDEFINED
4297 [main] DEBUG org.hibernate.persister.entity.AbstractEntityPersister - Getting current persistent state for: [snapshot.LineItem#component[order,sku]{order=snapshot.Order#1, sku=12345678}]
4297 [main] DEBUG org.hibernate.jdbc.AbstractBatcher - about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
4297 [main] DEBUG org.hibernate.SQL -
select
lineitem_.ORDER_ID,
lineitem_.SKU,
lineitem_.QUANTITY as QUANTITY1_,
lineitem_.UNIT as UNIT1_
from
TBL_LINE_ITEM lineitem_
where
lineitem_.ORDER_ID=?
and lineitem_.SKU=?
Hibernate:
select
lineitem_.ORDER_ID,
lineitem_.SKU,
lineitem_.QUANTITY as QUANTITY1_,
lineitem_.UNIT as UNIT1_
from
TBL_LINE_ITEM lineitem_
where
lineitem_.ORDER_ID=?
and lineitem_.SKU=?
4297 [main] DEBUG org.hibernate.jdbc.AbstractBatcher - preparing statement
4297 [main] DEBUG org.hibernate.type.LongType - binding '1' to parameter: 1
4297 [main] DEBUG org.hibernate.type.StringType - binding '12345678' to parameter: 2
4312 [main] DEBUG org.hibernate.jdbc.AbstractBatcher - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
4312 [main] DEBUG org.hibernate.jdbc.AbstractBatcher - closing statement
4312 [main] DEBUG org.hibernate.event.def.AbstractSaveEventListener - transient instance of: snapshot.LineItem
4312 [main] DEBUG org.hibernate.event.def.DefaultSaveOrUpdateEventListener - saving transient instance
4312 [main] DEBUG org.hibernate.event.def.AbstractSaveEventListener - generated identifier: component[order,sku]{order=snapshot.Order#1, sku=12345678}, using strategy: org.hibernate.id.Assigned
4312 [main] DEBUG org.hibernate.event.def.AbstractSaveEventListener - saving [snapshot.LineItem#component[order,sku]{order=snapshot.Order#1, sku=12345678}]
4312 [main] DEBUG org.hibernate.engine.CascadingAction - cascading to saveOrUpdate: snapshot.LineItem
4312 [main] DEBUG org.hibernate.engine.IdentifierValue - id unsaved-value strategy UNDEFINED
4312 [main] DEBUG org.hibernate.persister.entity.AbstractEntityPersister - Getting current persistent state for: [snapshot.LineItem#component[order,sku]{order=snapshot.Order#1, sku=87654321}]
4312 [main] DEBUG org.hibernate.jdbc.AbstractBatcher - about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
4312 [main] DEBUG org.hibernate.SQL -
select
lineitem_.ORDER_ID,
lineitem_.SKU,
lineitem_.QUANTITY as QUANTITY1_,
lineitem_.UNIT as UNIT1_
from
TBL_LINE_ITEM lineitem_
where
lineitem_.ORDER_ID=?
and lineitem_.SKU=?
Hibernate:
select
lineitem_.ORDER_ID,
lineitem_.SKU,
lineitem_.QUANTITY as QUANTITY1_,
lineitem_.UNIT as UNIT1_
from
TBL_LINE_ITEM lineitem_
where
lineitem_.ORDER_ID=?
and lineitem_.SKU=?
4312 [main] DEBUG org.hibernate.jdbc.AbstractBatcher - preparing statement
4312 [main] DEBUG org.hibernate.type.LongType - binding '1' to parameter: 1
4312 [main] DEBUG org.hibernate.type.StringType - binding '87654321' to parameter: 2
4312 [main] DEBUG org.hibernate.jdbc.AbstractBatcher - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
4312 [main] DEBUG org.hibernate.jdbc.AbstractBatcher - closing statement
4312 [main] DEBUG org.hibernate.event.def.AbstractSaveEventListener - transient instance of: snapshot.LineItem
4312 [main] DEBUG org.hibernate.event.def.DefaultSaveOrUpdateEventListener - saving transient instance
4312 [main] DEBUG org.hibernate.event.def.AbstractSaveEventListener - generated identifier: component[order,sku]{order=snapshot.Order#1, sku=87654321}, using strategy: org.hibernate.id.Assigned
4312 [main] DEBUG org.hibernate.event.def.AbstractSaveEventListener - saving [snapshot.LineItem#component[order,sku]{order=snapshot.Order#1, sku=87654321}]
4312 [main] DEBUG org.hibernate.engine.Cascade - done cascade ACTION_SAVE_UPDATE for collection: snapshot.Order.lineItems
4312 [main] DEBUG org.hibernate.engine.Cascade - done processing cascade ACTION_SAVE_UPDATE for: snapshot.Order
4312 [main] DEBUG org.hibernate.event.def.AbstractFlushingEventListener - flushing session
4312 [main] DEBUG org.hibernate.event.def.AbstractFlushingEventListener - processing flush-time cascades
4312 [main] DEBUG org.hibernate.engine.Cascade - processing cascade ACTION_SAVE_UPDATE for: snapshot.Order
4312 [main] DEBUG org.hibernate.engine.Cascade - cascade ACTION_SAVE_UPDATE for collection: snapshot.Order.lineItems
4312 [main] DEBUG org.hibernate.engine.CascadingAction - cascading to saveOrUpdate: snapshot.LineItem
4312 [main] DEBUG org.hibernate.event.def.AbstractSaveEventListener - persistent instance of: snapshot.LineItem
4312 [main] DEBUG org.hibernate.event.def.DefaultSaveOrUpdateEventListener - ignoring persistent instance
4312 [main] DEBUG org.hibernate.event.def.DefaultSaveOrUpdateEventListener - object already associated with session: [snapshot.LineItem#component[order,sku]{order=snapshot.Order#1, sku=12345678}]
4312 [main] DEBUG org.hibernate.engine.CascadingAction - cascading to saveOrUpdate: snapshot.LineItem
4312 [main] DEBUG org.hibernate.event.def.AbstractSaveEventListener - persistent instance of: snapshot.LineItem
4312 [main] DEBUG org.hibernate.event.def.DefaultSaveOrUpdateEventListener - ignoring persistent instance
4312 [main] DEBUG org.hibernate.event.def.DefaultSaveOrUpdateEventListener - object already associated with session: [snapshot.LineItem#component[order,sku]{order=snapshot.Order#1, sku=87654321}]
4312 [main] DEBUG org.hibernate.engine.Cascade - done cascade ACTION_SAVE_UPDATE for collection: snapshot.Order.lineItems
4312 [main] DEBUG org.hibernate.engine.Cascade - done processing cascade ACTION_SAVE_UPDATE for: snapshot.Order
4312 [main] DEBUG org.hibernate.event.def.AbstractFlushingEventListener - dirty checking collections
4312 [main] DEBUG org.hibernate.event.def.AbstractFlushingEventListener - Flushing entities and processing referenced collections
4312 [main] DEBUG org.hibernate.engine.Collections - Collection found: [snapshot.Order.lineItems#1], was: [<unreferenced>] (initialized)
4312 [main] DEBUG org.hibernate.event.def.AbstractFlushingEventListener - Processing unreferenced collections
4312 [main] DEBUG org.hibernate.event.def.AbstractFlushingEventListener - Scheduling collection removes/(re)creates/updates
4328 [main] DEBUG org.hibernate.event.def.AbstractFlushingEventListener - Flushed: 3 insertions, 0 updates, 0 deletions to 3 objects
4328 [main] DEBUG org.hibernate.event.def.AbstractFlushingEventListener - Flushed: 1 (re)creations, 0 updates, 0 removals to 1 collections
4328 [main] DEBUG org.hibernate.pretty.Printer - listing entities:
4328 [main] DEBUG org.hibernate.pretty.Printer - snapshot.Order{lineItems=[snapshot.LineItem#component[order,sku]{order=snapshot.Order#1, sku=12345678}, snapshot.LineItem#component[order,sku]{order=snapshot.Order#1, sku=87654321}], orderDate=2008-02-19 14:28:07, id=1}
4344 [main] DEBUG org.hibernate.pretty.Printer - snapshot.LineItem{units=Each, quantity=2, id=component[order,sku]{order=snapshot.Order#1, sku=12345678}}
4344 [main] DEBUG org.hibernate.pretty.Printer - snapshot.LineItem{units=Each, quantity=1, id=component[order,sku]{order=snapshot.Order#1, sku=87654321}}
4344 [main] DEBUG org.hibernate.event.def.AbstractFlushingEventListener - executing flush
4344 [main] DEBUG org.hibernate.jdbc.ConnectionManager - registering flush begin
4344 [main] DEBUG org.hibernate.persister.entity.AbstractEntityPersister - Inserting entity: [snapshot.Order#1]
4344 [main] DEBUG org.hibernate.jdbc.AbstractBatcher - about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
4344 [main] DEBUG org.hibernate.SQL -
insert
into
TBL_ORDER
(ORDER_DT, ORDER_ID)
values
(?, ?)
Hibernate:
insert
into
TBL_ORDER
(ORDER_DT, ORDER_ID)
values
(?, ?)
4344 [main] DEBUG org.hibernate.jdbc.AbstractBatcher - preparing statement
4344 [main] DEBUG org.hibernate.persister.entity.AbstractEntityPersister - Dehydrating entity: [snapshot.Order#1]
4344 [main] DEBUG org.hibernate.type.TimestampType - binding '2008-02-19 14:28:07' to parameter: 1
4344 [main] DEBUG org.hibernate.type.LongType - binding '1' to parameter: 2
4344 [main] DEBUG org.hibernate.persister.entity.AbstractEntityPersister - Inserting entity: [snapshot.LineItem#component[order,sku]{order=snapshot.Order#1, sku=12345678}]
4344 [main] DEBUG org.hibernate.jdbc.AbstractBatcher - Executing batch size: 1
4344 [main] DEBUG org.hibernate.jdbc.Expectations - success of batch update unknown: 0
4344 [main] DEBUG org.hibernate.jdbc.AbstractBatcher - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
4344 [main] DEBUG org.hibernate.jdbc.AbstractBatcher - closing statement
4344 [main] DEBUG org.hibernate.jdbc.AbstractBatcher - about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
4344 [main] DEBUG org.hibernate.SQL -
insert
into
TBL_LINE_ITEM
(QUANTITY, UNIT, ORDER_ID, SKU)
values
(?, DECODE(?, 'EA', 'Einzeln', 'DZ', 'Dutzend', 'PR', 'Paar'), ?, ?)
Hibernate:
insert
into
TBL_LINE_ITEM
(QUANTITY, UNIT, ORDER_ID, SKU)
values
(?, DECODE(?, 'EA', 'Einzeln', 'DZ', 'Dutzend', 'PR', 'Paar'), ?, ?)
4344 [main] DEBUG org.hibernate.jdbc.AbstractBatcher - preparing statement
4344 [main] DEBUG org.hibernate.persister.entity.AbstractEntityPersister - Dehydrating entity: [snapshot.LineItem#component[order,sku]{order=snapshot.Order#1, sku=12345678}]
4344 [main] DEBUG org.hibernate.type.IntegerType - binding '2' to parameter: 1
4344 [main] DEBUG org.hibernate.type.LongType - binding '1' to parameter: 3
4344 [main] DEBUG org.hibernate.type.StringType - binding '12345678' to parameter: 4
4344 [main] DEBUG org.hibernate.persister.entity.AbstractEntityPersister - Inserting entity: [snapshot.LineItem#component[order,sku]{order=snapshot.Order#1, sku=87654321}]
4344 [main] DEBUG org.hibernate.jdbc.AbstractBatcher - reusing prepared statement
4344 [main] DEBUG org.hibernate.SQL -
insert
into
TBL_LINE_ITEM
(QUANTITY, UNIT, ORDER_ID, SKU)
values
(?, DECODE(?, 'EA', 'Einzeln', 'DZ', 'Dutzend', 'PR', 'Paar'), ?, ?)
Hibernate:
insert
into
TBL_LINE_ITEM
(QUANTITY, UNIT, ORDER_ID, SKU)
values
(?, DECODE(?, 'EA', 'Einzeln', 'DZ', 'Dutzend', 'PR', 'Paar'), ?, ?)
4344 [main] DEBUG org.hibernate.persister.entity.AbstractEntityPersister - Dehydrating entity: [snapshot.LineItem#component[order,sku]{order=snapshot.Order#1, sku=87654321}]
4344 [main] DEBUG org.hibernate.type.IntegerType - binding '1' to parameter: 1
4344 [main] DEBUG org.hibernate.type.LongType - binding '1' to parameter: 3
4344 [main&