Why would Kodo refuse to batch inserts in certain tables? Big performance drop migrating to Kodo 4.1

classic Classic list List threaded Threaded
11 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Why would Kodo refuse to batch inserts in certain tables? Big performance drop migrating to Kodo 4.1

Roytman, Alex
Hello,

 

While migrating to Kodo 4.1 I noticed significant drop in insert
performance. I trace it down to some strange batching behavior. While
most of the PC were committed with batched inserts one particular class
refused to batch and would insert row by row resulting in 10 times
performance drop.

 

There is nothing special about the class. Its hierarchy is mapped on
base its table except for one of the lowest members which is mapped
vertically.

 

 

Thank you very much

 

Alex Roytman

Peace Technology, Inc.

301-206-9696x103

 

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Why would Kodo refuse to batch inserts in certain tables? Big performance drop migrating to Kodo 4.1

Marc Prud'hommeaux
Alex-

So you are saying that batching is working OK in general, just not  
for a particular class? And that this particular class was batching  
fine with previous versions? That is odd, although there are some  
cases where we might refuse to batch a particular class (because of a  
driver bug with batching certain column types, etc).

As a shot in the dark, we do work around a bug in the Oracle JDBC  
driver's failure to batch date/time effectively.

Can you post the SQL log that shows the series of SQL statements that  
should have been batched, but weren't? That might help shed light on it.

Also, database and JDBC driver type/version would be useful.



On Oct 15, 2006, at 7:30 PM, Roytman, Alex wrote:

> Hello,
>
>
>
> While migrating to Kodo 4.1 I noticed significant drop in insert
> performance. I trace it down to some strange batching behavior. While
> most of the PC were committed with batched inserts one particular  
> class
> refused to batch and would insert row by row resulting in 10 times
> performance drop.
>
>
>
> There is nothing special about the class. Its hierarchy is mapped on
> base its table except for one of the lowest members which is mapped
> vertically.
>
>
>
>
>
> Thank you very much
>
>
>
> Alex Roytman
>
> Peace Technology, Inc.
>
> 301-206-9696x103
>
>
>

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

RE: Why would Kodo refuse to batch inserts in certain tables? Big performance drop migrating to Kodo 4.1

Roytman, Alex
In reply to this post by Roytman, Alex
Hello Marc,

Yes, that's exactly the case.

I will prepare a small test case and post it shortly.

Thanks

Alex


-----Original Message-----
From: Marc Prud'hommeaux [mailto:[hidden email]] On Behalf Of
Marc Prud'hommeaux
Sent: Monday, October 16, 2006 7:30 PM
To: [hidden email]
Subject: Re: Why would Kodo refuse to batch inserts in certain tables?
Big performance drop migrating to Kodo 4.1

Alex-

So you are saying that batching is working OK in general, just not  
for a particular class? And that this particular class was batching  
fine with previous versions? That is odd, although there are some  
cases where we might refuse to batch a particular class (because of a  
driver bug with batching certain column types, etc).

As a shot in the dark, we do work around a bug in the Oracle JDBC  
driver's failure to batch date/time effectively.

Can you post the SQL log that shows the series of SQL statements that  
should have been batched, but weren't? That might help shed light on it.

Also, database and JDBC driver type/version would be useful.



On Oct 15, 2006, at 7:30 PM, Roytman, Alex wrote:

> Hello,
>
>
>
> While migrating to Kodo 4.1 I noticed significant drop in insert
> performance. I trace it down to some strange batching behavior. While
> most of the PC were committed with batched inserts one particular  
> class
> refused to batch and would insert row by row resulting in 10 times
> performance drop.
>
>
>
> There is nothing special about the class. Its hierarchy is mapped on
> base its table except for one of the lowest members which is mapped
> vertically.
>
>
>
>
>
> Thank you very much
>
>
>
> Alex Roytman
>
> Peace Technology, Inc.
>
> 301-206-9696x103
>
>
>

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

RE: Why would Kodo refuse to batch inserts in certain tables? Big performance drop migrating to Kodo 4.1

Roytman, Alex
In reply to this post by Roytman, Alex
Marc,

Attached is JDBC trace and my mapping file.

You can see how everything but DOCUMENT_NODE is batched.

DOCUMENT_NODE is a super-class table. It has several sub-classes all but
one mapped on the same table. The one mapped vertically uses DOCUMENT
table. DOCUMENT_NODE have several bi- and uni-directional recursive
associations

The rest of the classes are related to DOCUMENT_NODE via mapped-by

Alex


-----Original Message-----
From: Marc Prud'hommeaux [mailto:[hidden email]] On Behalf Of
Marc Prud'hommeaux
Sent: Monday, October 16, 2006 7:30 PM
To: [hidden email]
Subject: Re: Why would Kodo refuse to batch inserts in certain tables?
Big performance drop migrating to Kodo 4.1

Alex-

So you are saying that batching is working OK in general, just not  
for a particular class? And that this particular class was batching  
fine with previous versions? That is odd, although there are some  
cases where we might refuse to batch a particular class (because of a  
driver bug with batching certain column types, etc).

As a shot in the dark, we do work around a bug in the Oracle JDBC  
driver's failure to batch date/time effectively.

Can you post the SQL log that shows the series of SQL statements that  
should have been batched, but weren't? That might help shed light on it.

Also, database and JDBC driver type/version would be useful.



On Oct 15, 2006, at 7:30 PM, Roytman, Alex wrote:

> Hello,
>
>
>
> While migrating to Kodo 4.1 I noticed significant drop in insert
> performance. I trace it down to some strange batching behavior. While
> most of the PC were committed with batched inserts one particular  
> class
> refused to batch and would insert row by row resulting in 10 times
> performance drop.
>
>
>
> There is nothing special about the class. Its hierarchy is mapped on
> base its table except for one of the lowest members which is mapped
> vertically.
>
>
>
>
>
> Thank you very much
>
>
>
> Alex Roytman
>
> Peace Technology, Inc.
>
> 301-206-9696x103
>
>
>

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Why would Kodo refuse to batch inserts in certain tables? Big performance drop migrating to Kodo 4.1

Marc Prud'hommeaux
Alex-

No attachment came through.

Can you just paste the SQL log into a mail?


On Oct 16, 2006, at 6:04 PM, Roytman, Alex wrote:

> Marc,
>
> Attached is JDBC trace and my mapping file.
>
> You can see how everything but DOCUMENT_NODE is batched.
>
> DOCUMENT_NODE is a super-class table. It has several sub-classes  
> all but
> one mapped on the same table. The one mapped vertically uses DOCUMENT
> table. DOCUMENT_NODE have several bi- and uni-directional recursive
> associations
>
> The rest of the classes are related to DOCUMENT_NODE via mapped-by
>
> Alex
>
>
> -----Original Message-----
> From: Marc Prud'hommeaux [mailto:[hidden email]] On  
> Behalf Of
> Marc Prud'hommeaux
> Sent: Monday, October 16, 2006 7:30 PM
> To: [hidden email]
> Subject: Re: Why would Kodo refuse to batch inserts in certain tables?
> Big performance drop migrating to Kodo 4.1
>
> Alex-
>
> So you are saying that batching is working OK in general, just not
> for a particular class? And that this particular class was batching
> fine with previous versions? That is odd, although there are some
> cases where we might refuse to batch a particular class (because of a
> driver bug with batching certain column types, etc).
>
> As a shot in the dark, we do work around a bug in the Oracle JDBC
> driver's failure to batch date/time effectively.
>
> Can you post the SQL log that shows the series of SQL statements that
> should have been batched, but weren't? That might help shed light  
> on it.
>
> Also, database and JDBC driver type/version would be useful.
>
>
>
> On Oct 15, 2006, at 7:30 PM, Roytman, Alex wrote:
>
>> Hello,
>>
>>
>>
>> While migrating to Kodo 4.1 I noticed significant drop in insert
>> performance. I trace it down to some strange batching behavior. While
>> most of the PC were committed with batched inserts one particular
>> class
>> refused to batch and would insert row by row resulting in 10 times
>> performance drop.
>>
>>
>>
>> There is nothing special about the class. Its hierarchy is mapped on
>> base its table except for one of the lowest members which is mapped
>> vertically.
>>
>>
>>
>>
>>
>> Thank you very much
>>
>>
>>
>> Alex Roytman
>>
>> Peace Technology, Inc.
>>
>> 301-206-9696x103
>>
>>
>>
>

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

RE: Why would Kodo refuse to batch inserts in certain tables? Big performance drop migrating to Kodo 4.1

Roytman, Alex
In reply to this post by Roytman, Alex
Yes it will be wrapped by email though

 

15  WARN   [main] openjpa.Runtime - The property named
"kodo.jdbc.SequenceFactory" was not recognized and will be ignored,
although the name closely matches a valid property called
"kodo.jdbc.SchemaFactory".

15  WARN   [main] openjpa.Runtime - The property named
"kodo.jdbc.ClassIndicator" was not recognized and will be ignored,
although the name closely matches a valid property called
"kodo.jdbc.MappingFactory".

47  INFO   [main] openjpa.Runtime - Starting BEA Kodo 4.1.0 with
patches:

    Kodo JDO Utilities vtip-revision

62  INFO   [main] openjpa.jdbc.JDBC - Using dictionary class
"org.apache.openjpa.jdbc.sql.OracleDictionary".

328  INFO   [main] openjpa.jdbc.JDBC - oracle-batch-override

1578  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
executing prepstmnt 21057622 SELECT t0.JDO_LOCK, t0.IS_ACTIVE,
t0.DEFAULT_VALUE, t0.DESCRIPTION, t0.IS_LOOKUP, t0.LOOKUP_SORT_ORDER,
t0.IS_MULTI_VALUE FROM DTS.PROPERTY_DEFINITION t0 WHERE t0.NAME = ?
[params=(String) IC]

1578  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
ms] spent

1593  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
executing prepstmnt 21057622 SELECT t0.JDO_LOCK, t0.IS_ACTIVE,
t0.DEFAULT_VALUE, t0.DESCRIPTION, t0.IS_LOOKUP, t0.LOOKUP_SORT_ORDER,
t0.IS_MULTI_VALUE FROM DTS.PROPERTY_DEFINITION t0 WHERE t0.NAME = ?
[params=(String) DocType]

1593  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
ms] spent

1593  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
executing prepstmnt 21057622 SELECT t0.JDO_LOCK, t0.IS_ACTIVE,
t0.DEFAULT_VALUE, t0.DESCRIPTION, t0.IS_LOOKUP, t0.LOOKUP_SORT_ORDER,
t0.IS_MULTI_VALUE FROM DTS.PROPERTY_DEFINITION t0 WHERE t0.NAME = ?
[params=(String) GC]

1593  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
ms] spent

1593  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
executing prepstmnt 21057622 SELECT t0.JDO_LOCK, t0.IS_ACTIVE,
t0.DEFAULT_VALUE, t0.DESCRIPTION, t0.IS_LOOKUP, t0.LOOKUP_SORT_ORDER,
t0.IS_MULTI_VALUE FROM DTS.PROPERTY_DEFINITION t0 WHERE t0.NAME = ?
[params=(String) ClauseId]

1593  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
ms] spent

1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
executing prepstmnt 15513215 INSERT INTO DTS.DOCUMENT (DOCUMENT_NODE_ID,
DOCUMENT_NUMBER, TEMPLATE_ID, ORG_UNIT_ID, PREPARER, TITLE,
IS_PUBLISHED, PUBLISH_DATE) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
[params=(long) 529800, (String) {529800}, (long) 9432, (long) 1, (long)
1, (null) null, (int) 0, (null) null]

1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
ms] spent

1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
batching prepstmnt 12675864 INSERT INTO DTS.DOCUMENT_FIELD
(DOCUMENT_NODE_ID, NAME, CONTENT_ID, VALUE, JDO_CLASS, JDO_LOCK) VALUES
(?, ?, ?, ?, ?, ?) [params=(long) 529802, (String) preferences, (long)
2117, (null) null, (int) 520, (int) 1]

1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
ms] spent

1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
batching prepstmnt 12675864 INSERT INTO DTS.DOCUMENT_FIELD
(DOCUMENT_NODE_ID, NAME, CONTENT_ID, VALUE, JDO_CLASS, JDO_LOCK) VALUES
(?, ?, ?, ?, ?, ?) [params=(long) 529801, (String) preferences, (long)
2116, (null) null, (int) 520, (int) 1]

1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
ms] spent

1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
batching prepstmnt 12675864 INSERT INTO DTS.DOCUMENT_FIELD
(DOCUMENT_NODE_ID, NAME, CONTENT_ID, VALUE, JDO_CLASS, JDO_LOCK) VALUES
(?, ?, ?, ?, ?, ?) [params=(long) 529802, (String) address, (long) 2117,
(null) null, (int) 510, (int) 1]

1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
ms] spent

1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
batching prepstmnt 12675864 INSERT INTO DTS.DOCUMENT_FIELD
(DOCUMENT_NODE_ID, NAME, CONTENT_ID, VALUE, JDO_CLASS, JDO_LOCK) VALUES
(?, ?, ?, ?, ?, ?) [params=(long) 529801, (String) address, (long) 2116,
(null) null, (int) 510, (int) 1]

1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
ms] spent

1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
executing prepstmnt 12675864 INSERT INTO DTS.DOCUMENT_FIELD
(DOCUMENT_NODE_ID, NAME, CONTENT_ID, VALUE, JDO_CLASS, JDO_LOCK) VALUES
(?, ?, ?, ?, ?, ?) [params=(long) 529801, (String) address, (long) 2116,
(null) null, (int) 510, (int) 1]

1640  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [15
ms] spent

1640  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
executing prepstmnt 6169134 INSERT INTO DTS.DOCUMENT_NODE
(DOCUMENT_NODE_ID, OWNER_DOCUMENT, LOCAL_ROOT, PARENT, NAME,
CREATE_DATE, UPDATE_DATE, UPDATE_USER, JDO_CLASS, JDO_LOCK) VALUES (?,
?, ?, ?, ?, ?, ?, ?, ?, ?) [params=(long) 529800, (long) 529800, (long)
529800, (null) null, (String) d529800, (Date) 2006-10-16, (Date)
2006-10-16, (String) dts.test, (int) 440, (int) 1]

1640  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
ms] spent

1640  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
executing prepstmnt 1440568 INSERT INTO DTS.DOCUMENT_NODE
(DOCUMENT_NODE_ID, OWNER_DOCUMENT, LOCAL_ROOT, PARENT,
PARENT_SORT_ORDER, NAME, CONTENT_ID, ORIGINAL_CONTENT, REFERENCE_NUMBER,
IS_GROUP, IS_SELECTED_BY_USER, IS_SELECTED_BY_RULE, CREATE_DATE,
UPDATE_DATE, UPDATE_USER, JDO_CLASS, JDO_LOCK) VALUES (?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [params=(long) 529801, (long) 529800,
(long) 529800, (long) 529800, (int) 0, (String) t1, (long) 2116, (null)
null, (null) null, (int) 0, (null) null, (int) 0, (Date) 2006-10-16,
(Date) 2006-10-16, (String) dts.test, (int) 430, (int) 1]

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [16
ms] spent

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
executing prepstmnt 1440568 INSERT INTO DTS.DOCUMENT_NODE
(DOCUMENT_NODE_ID, OWNER_DOCUMENT, LOCAL_ROOT, PARENT,
PARENT_SORT_ORDER, NAME, CONTENT_ID, ORIGINAL_CONTENT, REFERENCE_NUMBER,
IS_GROUP, IS_SELECTED_BY_USER, IS_SELECTED_BY_RULE, CREATE_DATE,
UPDATE_DATE, UPDATE_USER, JDO_CLASS, JDO_LOCK) VALUES (?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [params=(long) 529802, (long) 529800,
(long) 529800, (long) 529801, (int) 0, (String) t1.1, (long) 2117,
(null) null, (null) null, (int) 0, (null) null, (int) 0, (Date)
2006-10-16, (Date) 2006-10-16, (String) dts.test, (int) 430, (int) 1]

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
ms] spent

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
(DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
[params=(long) 529802, (String) IC, (String) IC1, (int) 1]

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
ms] spent

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
(DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
[params=(long) 529801, (String) ClauseId, (String) CRS, (int) 1]

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
ms] spent

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
(DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
[params=(long) 529802, (String) GC, (String) CRS, (int) 1]

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
ms] spent

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
(DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
[params=(long) 529800, (String) DocType, (String) RFP, (int) 1]

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
ms] spent

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
(DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
[params=(long) 529802, (String) GC, (String) EDUC, (int) 1]

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
ms] spent

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
(DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
[params=(long) 529801, (String) GC, (String) CRS, (int) 1]

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
ms] spent

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
(DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
[params=(long) 529802, (String) ClauseId, (String) CRS, (int) 1]

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
ms] spent

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
(DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
[params=(long) 529800, (String) IC, (String) NHLBI, (int) 1]

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
ms] spent

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
(DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
[params=(long) 529802, (String) IC, (String) IC2, (int) 1]

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
ms] spent

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
(DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
[params=(long) 529801, (String) GC, (String) EDUC, (int) 1]

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
ms] spent

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
(DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
[params=(long) 529800, (String) IC, (String) NCI, (int) 1]

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
ms] spent

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
(DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
[params=(long) 529801, (String) IC, (String) IC1, (int) 1]

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
ms] spent

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
(DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
[params=(long) 529801, (String) IC, (String) IC2, (int) 1]

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
ms] spent

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
executing prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
(DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
[params=(long) 529801, (String) IC, (String) IC2, (int) 1]

1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
ms] spent

 

 

 

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE jdo PUBLIC "-//Sun Microsystems, Inc.//DTD Java Data Objects
Metadata 2.0//EN" "http://java.sun.com/dtd/jdo_2_0.dtd">

<jdo>

  <package name="com.peacetech.dts.jdo">

 

    <interface name="com.peacetech.dts.ApplicationProperty"/>

 

    <class name="ApplicationPropertyImpl" table="APPLICATION_PROPERTY"
identity-type="application"
objectid-class="com.peacetech.dts.jdo.ApplicationPropertyImpl$OID">

      <implements name="com.peacetech.dts.ApplicationProperty"/>

      <version strategy="version-number" column="JDO_LOCK"/>

      <field name="name" primary-key="true" null-value="exception">

        <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="32" scale="0"/>

      </field>

      <field name="value">

        <column name="VALUE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="250" scale="0"/>

      </field>

      <field name="modifiable" null-value="exception">

        <column name="MODIFIABLE" jdbc-type="DECIMAL" sql-type="NUMBER"
length="1" scale="0"/>

      </field>

      <field name="runtimeModifiable" null-value="exception">

        <column name="RUNTIME_MODIFIABLE" jdbc-type="DECIMAL"
sql-type="NUMBER" length="1" scale="0"/>

      </field>

      <field name="description">

        <column name="DESCRIPTION" jdbc-type="VARCHAR"
sql-type="VARCHAR2" length="256" scale="0"/>

      </field>

    </class>

 

    <interface name="com.peacetech.dts.Attribute"/>

 

    <class name="AttributeImpl" table="ATTRIBUTE"
identity-type="application"
objectid-class="com.peacetech.dts.jdo.AttributeImpl$OID">

      <implements name="com.peacetech.dts.Attribute"/>

      <version strategy="version-number" column="JDO_LOCK"/>

      <field name="id" primary-key="true" null-value="exception">

        <column name="ATTRIBUTE_ID" jdbc-type="DECIMAL"
sql-type="NUMBER" length="12" scale="0"/>

      </field>

      <field name="name" null-value="exception">

        <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="32" scale="0"/>

      </field>

      <field name="description">

        <column name="DESCRIPTION" jdbc-type="VARCHAR"
sql-type="VARCHAR2" length="200" scale="0"/>

      </field>

      <field name="active" null-value="exception">

        <column name="IS_ACTIVE" jdbc-type="DECIMAL" sql-type="NUMBER"
length="1" scale="0"/>

      </field>

      <field name="shared" null-value="exception">

        <column name="IS_SHARED" jdbc-type="DECIMAL" sql-type="NUMBER"
length="1" scale="0"/>

      </field>

      <field name="lookup" null-value="exception">

        <column name="IS_LOOKUP" jdbc-type="DECIMAL" sql-type="NUMBER"
length="1" scale="0"/>

      </field>

      <field name="lookupSortOrder" null-value="exception"
persistence-modifier="persistent" default-fetch-group="true">

        <extension vendor-name="kodo" key="externalizer"
value="toSqlValue"/>

        <extension vendor-name="kodo" key="factory"
value="fromSqlValue"/>

        <column name="LOOKUP_SORT_ORDER" jdbc-type="DECIMAL"
sql-type="NUMBER" length="9" scale="0"/>

      </field>

      <field name="multiValue" null-value="exception">

        <column name="IS_MULTI_VALUE" jdbc-type="DECIMAL"
sql-type="NUMBER" length="1" scale="0"/>

      </field>

      <field name="required" null-value="exception">

        <column name="IS_REQUIRED" jdbc-type="DECIMAL" sql-type="NUMBER"
length="1" scale="0"/>

      </field>

      <field name="defaultValue">

        <column name="DEFAULT_VALUE" jdbc-type="VARCHAR"
sql-type="VARCHAR2" length="100" scale="0"/>

      </field>

      <field name="lookupValues" table="ATTRIBUTE_LOOKUP"
mapped-by="attribute"> <!-- 1-N -->

        <collection
element-type="com.peacetech.dts.jdo.AttributeLookupImpl"/>

        <extension vendor-name="kodo" key="fetch-group"
value="AttributeImpl.lookupValues"/>

      </field>

    </class>

 

    <interface name="com.peacetech.dts.AttributeLookup"/>

 

    <class name="AttributeLookupImpl" table="ATTRIBUTE_LOOKUP"
identity-type="application"
objectid-class="com.peacetech.dts.jdo.AttributeLookupImpl$OID">

      <implements name="com.peacetech.dts.AttributeLookup"/>

      <version strategy="version-number" column="JDO_LOCK"/>

      <field name="attributeId" primary-key="true"
null-value="exception">

        <column name="ATTRIBUTE_ID" jdbc-type="DECIMAL"
sql-type="NUMBER" length="12" scale="0"/>

      </field>

      <field name="code" primary-key="true" null-value="exception">

        <column name="CODE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="16" scale="0"/>

      </field>

      <field name="description">

        <column name="DESCRIPTION" jdbc-type="VARCHAR"
sql-type="VARCHAR2" length="120" scale="0"/>

      </field>

      <field name="shortDescription">

        <column name="SHORT_DESCRIPTION" jdbc-type="VARCHAR"
sql-type="VARCHAR2" length="64" scale="0"/>

      </field>

      <field name="sortOrder" null-value="exception">

        <column name="SORT_ORDER" jdbc-type="DECIMAL" sql-type="NUMBER"
length="9" scale="0"/>

      </field>

      <field name="attribute"  null-value="exception">  <!-- N-1 (ref)
-->

        <column name="ATTRIBUTE_ID" target="ATTRIBUTE_ID"
jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="AttributeLookupImpl.attribute"/>

      </field>

    </class>

 

    <interface name="com.peacetech.dts.Component"/>

 

    <class name="ComponentImpl" table="COMPONENT"
identity-type="application"
persistence-capable-superclass="com.peacetech.dts.jdo.TemplateNodeImpl">

      <implements name="com.peacetech.dts.Component"/>

 

      <inheritance strategy="new-table">

        <join>

          <column name="TEMPLATE_NODE_ID" target="TEMPLATE_NODE_ID"/>

        </join>

        <discriminator value="110"/>

      </inheritance>

      <field name="released" null-value="exception">

        <column name="IS_RELEASED" jdbc-type="DECIMAL" sql-type="NUMBER"
length="1" scale="0"/>

      </field>

      <field name="effectiveDate">

        <column name="EFFECTIVE_DATE" jdbc-type="DATE" sql-type="DATE"
length="7" scale="0"/>

      </field>

      <field name="description">

        <column name="DESCRIPTION" jdbc-type="VARCHAR"
sql-type="VARCHAR2" length="200" scale="0"/>

      </field>

      <field name="preparer"  null-value="exception">  <!-- N-1 (ref)
-->

        <column name="PREPARER" target="EMPLOYEE_ID" jdbc-type="DECIMAL"
sql-type="NUMBER" length="12" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="ComponentImpl.preparer"/>

      </field>

      <field name="orgUnit"  null-value="exception">  <!-- N-1 (ref) -->

        <column name="ORG_UNIT_ID" target="ORG_UNIT_ID"
jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="ComponentImpl.orgUnit"/>

      </field>

      <field name="container"  null-value="exception">  <!-- N-1 (ref)
-->

        <column name="CONTAINER_ID" target="CONTAINER_ID"
jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="ComponentImpl.container"/>

      </field>

       <field name="attributes" table="COMPONENT_ATTRIBUTE"> <!-- M-N
-->

        <collection element-type="com.peacetech.dts.jdo.AttributeImpl"/>

        <join>

          <column name="TEMPLATE_NODE_ID" target="TEMPLATE_NODE_ID"
jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>

        </join>

        <element>

          <column name="ATTRIBUTE_ID" target="ATTRIBUTE_ID"
jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>

        </element>

        <order column="SORT_ORDER"/>

        <extension vendor-name="kodo" key="fetch-group"
value="ComponentImpl.attributes"/>

      </field>

    </class>

 

    <interface name="com.peacetech.dts.Container"/>

 

    <class name="ContainerImpl" table="CONTAINER"
identity-type="application"
objectid-class="com.peacetech.dts.jdo.ContainerImpl$OID">

      <implements name="com.peacetech.dts.Container"/>

      <inheritance strategy="new-table">

        <discriminator strategy="value-map" value="300"
column="JDO_CLASS"/>

      </inheritance>

      <version strategy="version-number" column="JDO_LOCK"/>

      <field name="id" primary-key="true" null-value="exception">

        <column name="CONTAINER_ID" jdbc-type="DECIMAL"
sql-type="NUMBER" length="12" scale="0"/>

      </field>

      <field name="name" null-value="exception">

        <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="48" scale="0"/>

      </field>

      <field name="description">

        <column name="DESCRIPTION" jdbc-type="VARCHAR"
sql-type="VARCHAR2" length="400" scale="0"/>

      </field>

      <field name="parent" >  <!-- N-1 (ref) -->

        <column name="PARENT" target="CONTAINER_ID" jdbc-type="DECIMAL"
sql-type="NUMBER" length="12" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="ContainerImpl.parent"/>

      </field>

      <field name="subNodes" table="CONTAINER" mapped-by="parent"> <!--
1-N -->

        <collection element-type="com.peacetech.dts.jdo.ContainerImpl"/>

        <extension vendor-name="kodo" key="fetch-group"
value="ContainerImpl.subNodes"/>

      </field>

      <field name="properties" table="CONTAINER_PROPERTY"
mapped-by="container"> <!-- 1-N -->

        <collection
element-type="com.peacetech.dts.jdo.ContainerPropertyImpl"/>

        <extension vendor-name="kodo" key="fetch-group"
value="ContainerImpl.properties"/>

      </field>

    </class>

 

    <interface name="com.peacetech.dts.ContainerProperty"/>

 

    <class name="ContainerPropertyImpl" table="CONTAINER_PROPERTY"
identity-type="application"
objectid-class="com.peacetech.dts.jdo.ContainerPropertyImpl$OID">

      <implements name="com.peacetech.dts.ContainerProperty"/>

      <version strategy="version-number" column="JDO_LOCK"/>

      <field name="containerId" primary-key="true"
null-value="exception">

        <column name="CONTAINER_ID" jdbc-type="DECIMAL"
sql-type="NUMBER" length="12" scale="0"/>

      </field>

      <field name="nameId" primary-key="true" null-value="exception">

        <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="32" scale="0"/>

      </field>

      <field name="value" primary-key="true" null-value="exception">

        <column name="VALUE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="32" scale="0"/>

      </field>

      <field name="container"  null-value="exception">  <!-- N-1 (ref)
-->

        <column name="CONTAINER_ID" target="CONTAINER_ID"
jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="ContainerPropertyImpl.container"/>

      </field>

      <field name="definition"  null-value="exception">  <!-- N-1 (ref)
-->

        <column name="NAME" target="NAME" jdbc-type="VARCHAR"
sql-type="VARCHAR2" length="32" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="ContainerPropertyImpl.definition"/>

      </field>

    </class>

 

    <interface name="com.peacetech.dts.Content"/>

 

    <class name="ContentImpl" table="CONTENT"
identity-type="application"
objectid-class="com.peacetech.dts.jdo.ContentImpl$OID">

      <implements name="com.peacetech.dts.Content"/>

      <inheritance strategy="new-table">

        <discriminator strategy="value-map" value="200"
column="JDO_CLASS"/>

      </inheritance>

      <version strategy="version-number" column="JDO_LOCK"/>

      <field name="id" primary-key="true" null-value="exception">

        <column name="CONTENT_ID" jdbc-type="DECIMAL" sql-type="NUMBER"
length="12" scale="0"/>

      </field>

      <field name="tocTitle">

        <column name="TOC_TITLE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="500" scale="0"/>

      </field>

      <field name="shortTitle">

        <column name="SHORT_TITLE" jdbc-type="VARCHAR"
sql-type="VARCHAR2" length="80" scale="0"/>

      </field>

      <field name="longTitle">

        <column name="LONG_TITLE" jdbc-type="VARCHAR"
sql-type="VARCHAR2" length="200" scale="0"/>

      </field>

      <field name="text">

        <column name="TEXT" jdbc-type="CLOB" sql-type="CLOB" length="-1"
scale="0"/>

      </field>

      <field name="instructions">

        <column name="INSTRUCTIONS" jdbc-type="CLOB" sql-type="CLOB"
length="-1" scale="0"/>

      </field>

      <field name="fields" table="CONTENT_FIELD" mapped-by="content">
<!-- 1-N -->

        <collection
element-type="com.peacetech.dts.jdo.ContentFieldImpl"/>

        <order column="SORT_ORDER"/>

        <extension vendor-name="kodo" key="fetch-group"
value="ContentImpl.fields"/>

      </field>

      <field name="rules" table="TEMPLATE_RULE" mapped-by="content">
<!-- 1-N -->

        <collection
element-type="com.peacetech.dts.jdo.TemplateRuleImpl"/>

        <order column="CONTENT_SORT_ORDER"/>

        <extension vendor-name="kodo" key="fetch-group"
value="ContentImpl.rules"/>

      </field>

    </class>

 

    <interface name="com.peacetech.dts.ContentField"/>

 

    <class name="ContentFieldImpl" table="CONTENT_FIELD"
identity-type="application"
objectid-class="com.peacetech.dts.jdo.ContentFieldImpl$OID">

      <implements name="com.peacetech.dts.ContentField"/>

      <version strategy="version-number" column="JDO_LOCK"/>

      <field name="contentId" primary-key="true" null-value="exception">

        <column name="CONTENT_ID" jdbc-type="DECIMAL" sql-type="NUMBER"
length="12" scale="0"/>

      </field>

      <field name="name" primary-key="true" null-value="exception">

        <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="40" scale="0"/>

      </field>

      <field name="dataType">

        <column name="DATA_TYPE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="20" scale="0"/>

      </field>

      <field name="format">

        <column name="FORMAT" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="30" scale="0"/>

      </field>

      <field name="required">

        <column name="REQUIRED" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="80" scale="0"/>

      </field>

      <field name="label">

        <column name="LABEL" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="60" scale="0"/>

      </field>

      <field name="attributes" null-value="exception"
persistence-modifier="persistent" default-fetch-group="true">

        <extension vendor-name="kodo" key="externalizer"
value="com.peacetech.dts.jdo.helpers.Externalizers.fromStringMap"/>

        <extension vendor-name="kodo" key="factory"
value="com.peacetech.dts.jdo.helpers.Externalizers.toStringMap"/>

        <column name="ATTRIBUTES" jdbc-type="VARCHAR"
sql-type="VARCHAR2" length="512" scale="0"/>

      </field>

      <field name="multiValue" null-value="exception">

        <column name="IS_MULTI_VALUE" jdbc-type="DECIMAL"
sql-type="NUMBER" length="1" scale="0"/>

      </field>

      <field name="inputValues" null-value="exception"
persistence-modifier="persistent" default-fetch-group="true">

        <extension vendor-name="kodo" key="externalizer"
value="com.peacetech.dts.jdo.helpers.Externalizers.fromStringMap"/>

        <extension vendor-name="kodo" key="factory"
value="com.peacetech.dts.jdo.helpers.Externalizers.toStringMap"/>

        <column name="INPUT_VALUES" jdbc-type="CLOB" sql-type="CLOB"
length="-1" scale="0"/>

      </field>

      <field name="content"  null-value="exception">  <!-- N-1 (ref) -->

        <column name="CONTENT_ID" target="CONTENT_ID"
jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="ContentFieldImpl.content"/>

      </field>

    </class>

 

    <interface name="com.peacetech.dts.Document"/>

 

    <class name="DocumentImpl" table="DOCUMENT"
identity-type="application"
persistence-capable-superclass="com.peacetech.dts.jdo.DocumentNodeImpl">

      <implements name="com.peacetech.dts.Document"/>

 

      <inheritance strategy="new-table">

        <join>

          <column name="DOCUMENT_NODE_ID" target="DOCUMENT_NODE_ID"/>

        </join>

        <discriminator value="440"/>

      </inheritance>

      <field name="documentNumber" null-value="exception">

        <column name="DOCUMENT_NUMBER" jdbc-type="VARCHAR"
sql-type="VARCHAR2" length="32" scale="0"/>

      </field>

      <field name="title">

        <column name="TITLE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="200" scale="0"/>

      </field>

      <field name="published" null-value="exception">

        <column name="IS_PUBLISHED" jdbc-type="DECIMAL"
sql-type="NUMBER" length="1" scale="0"/>

      </field>

      <field name="publishDate">

        <column name="PUBLISH_DATE" jdbc-type="DATE" sql-type="DATE"
length="7" scale="0"/>

      </field>

      <field name="preparer"  null-value="exception">  <!-- N-1 (ref)
-->

        <column name="PREPARER" target="EMPLOYEE_ID" jdbc-type="DECIMAL"
sql-type="NUMBER" length="12" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="DocumentImpl.preparer"/>

      </field>

      <field name="orgUnit"  null-value="exception">  <!-- N-1 (ref) -->

        <column name="ORG_UNIT_ID" target="ORG_UNIT_ID"
jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="DocumentImpl.orgUnit"/>

      </field>

      <field name="attributes" table="DOCUMENT_ATTRIBUTE"
mapped-by="document"> <!-- 1-N -->

        <collection
element-type="com.peacetech.dts.jdo.DocumentAttributeImpl"/>

        <extension vendor-name="kodo" key="fetch-group"
value="DocumentImpl.attributes"/>

      </field>

      <field name="relatedDocuments" table="RELATED_DOCUMENT"
mapped-by="source"> <!-- 1-N -->

        <collection
element-type="com.peacetech.dts.jdo.RelatedDocumentImpl"/>

        <extension vendor-name="kodo" key="fetch-group"
value="DocumentImpl.relatedDocuments"/>

      </field>

      <field name="relatedToDocuments" table="RELATED_DOCUMENT"
mapped-by="target"> <!-- 1-N -->

        <collection
element-type="com.peacetech.dts.jdo.RelatedDocumentImpl"/>

        <extension vendor-name="kodo" key="fetch-group"
value="DocumentImpl.relatedToDocuments"/>

      </field>

      <field name="template"  null-value="exception">  <!-- N-1 (ref)
-->

        <column name="TEMPLATE_ID" target="TEMPLATE_NODE_ID"
jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="DocumentImpl.template"/>

      </field>

    </class>

 

    <interface name="com.peacetech.dts.DocumentAttribute"/>

 

    <class name="DocumentAttributeImpl" table="DOCUMENT_ATTRIBUTE"
identity-type="application"
objectid-class="com.peacetech.dts.jdo.DocumentAttributeImpl$OID">

      <implements name="com.peacetech.dts.DocumentAttribute"/>

      <version strategy="version-number" column="JDO_LOCK"/>

      <field name="documentNodeId" primary-key="true"
null-value="exception">

        <column name="DOCUMENT_NODE_ID" jdbc-type="DECIMAL"
sql-type="NUMBER" length="12" scale="0"/>

      </field>

      <field name="attributeId" primary-key="true"
null-value="exception">

        <column name="ATTRIBUTE_ID" jdbc-type="DECIMAL"
sql-type="NUMBER" length="12" scale="0"/>

      </field>

      <field name="value">

        <column name="VALUE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="100" scale="0"/>

      </field>

      <field name="attribute"  null-value="exception">  <!-- N-1 (ref)
-->

        <column name="ATTRIBUTE_ID" target="ATTRIBUTE_ID"
jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="DocumentAttributeImpl.attribute"/>

      </field>

      <field name="document"  null-value="exception">  <!-- N-1 (ref)
-->

        <column name="DOCUMENT_NODE_ID" target="DOCUMENT_NODE_ID"
jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="DocumentAttributeImpl.document"/>

      </field>

    </class>

 

    <interface name="com.peacetech.dts.DocumentField"/>

 

    <class name="DocumentFieldImpl" table="DOCUMENT_FIELD"
identity-type="application"
objectid-class="com.peacetech.dts.jdo.DocumentFieldImpl$OID">

      <implements name="com.peacetech.dts.DocumentField"/>

      <inheritance strategy="new-table">

        <discriminator strategy="value-map" value="500"
column="JDO_CLASS"/>

      </inheritance>

      <version strategy="version-number" column="JDO_LOCK"/>

      <field name="documentNodeId" primary-key="true"
null-value="exception">

        <column name="DOCUMENT_NODE_ID" jdbc-type="DECIMAL"
sql-type="NUMBER" length="12" scale="0"/>

      </field>

      <field name="nameId" primary-key="true" null-value="exception">

        <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="40" scale="0"/>

      </field>

      <field name="definition"  null-value="exception">  <!-- N-1 (ref)
-->

        <column name="CONTENT_ID" target="CONTENT_ID"
jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>

        <column name="NAME" target="NAME" jdbc-type="VARCHAR"
sql-type="VARCHAR2" length="40" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="DocumentFieldImpl.definition"/>

      </field>

      <field name="topic"  null-value="exception">  <!-- N-1 (ref) -->

        <column name="DOCUMENT_NODE_ID" target="DOCUMENT_NODE_ID"
jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="DocumentFieldImpl.topic"/>

      </field>

    </class>

 

    <interface name="com.peacetech.dts.DocumentNode"/>

 

    <class name="DocumentNodeImpl" table="DOCUMENT_NODE"
identity-type="application"
objectid-class="com.peacetech.dts.jdo.DocumentNodeImpl$OID">

      <implements name="com.peacetech.dts.DocumentNode"/>

      <inheritance strategy="new-table">

        <discriminator strategy="value-map" value="400"
column="JDO_CLASS"/>

      </inheritance>

      <version strategy="version-number" column="JDO_LOCK"/>

      <field name="id" primary-key="true" null-value="exception">

        <column name="DOCUMENT_NODE_ID" jdbc-type="DECIMAL"
sql-type="NUMBER" length="12" scale="0"/>

      </field>

      <field name="name" null-value="exception">

        <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="64" scale="0"/>

      </field>

      <field name="createDate">

        <column name="CREATE_DATE" jdbc-type="DATE" sql-type="DATE"
length="7" scale="0"/>

      </field>

      <field name="updateDate">

        <column name="UPDATE_DATE" jdbc-type="DATE" sql-type="DATE"
length="7" scale="0"/>

      </field>

      <field name="updateUser">

        <column name="UPDATE_USER" jdbc-type="VARCHAR"
sql-type="VARCHAR2" length="32" scale="0"/>

      </field>

      <field name="localRoot"  null-value="exception">  <!-- N-1 (ref)
-->

        <column name="LOCAL_ROOT" target="DOCUMENT_NODE_ID"
jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="DocumentNodeImpl.localRoot"/>

      </field>

      <field name="parent" >  <!-- N-1 (ref) -->

        <column name="PARENT" target="DOCUMENT_NODE_ID"
jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="DocumentNodeImpl.parent"/>

      </field>

      <field name="subNodes" table="DOCUMENT_NODE" mapped-by="parent">
<!-- 1-N -->

        <collection
element-type="com.peacetech.dts.jdo.DocumentNodeImpl"/>

        <order column="PARENT_SORT_ORDER"/>

        <extension vendor-name="kodo" key="fetch-group"
value="DocumentNodeImpl.subNodes"/>

      </field>

      <field name="properties" table="DOCUMENT_NODE_PROPERTY"
mapped-by="documentNode"> <!-- 1-N -->

        <collection
element-type="com.peacetech.dts.jdo.DocumentNodePropertyImpl"/>

        <extension vendor-name="kodo" key="fetch-group"
value="DocumentNodeImpl.properties"/>

      </field>

      <field name="ownerDocument"  null-value="exception">  <!-- N-1
(ref) -->

        <column name="OWNER_DOCUMENT" target="DOCUMENT_NODE_ID"
jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="DocumentNodeImpl.ownerDocument"/>

      </field>

    </class>

 

    <interface name="com.peacetech.dts.DocumentNodeProperty"/>

 

    <class name="DocumentNodePropertyImpl"
table="DOCUMENT_NODE_PROPERTY" identity-type="application"
objectid-class="com.peacetech.dts.jdo.DocumentNodePropertyImpl$OID">

      <implements name="com.peacetech.dts.DocumentNodeProperty"/>

      <version strategy="version-number" column="JDO_LOCK"/>

      <field name="documentNodeId" primary-key="true"
null-value="exception">

        <column name="DOCUMENT_NODE_ID" jdbc-type="DECIMAL"
sql-type="NUMBER" length="12" scale="0"/>

      </field>

      <field name="nameId" primary-key="true" null-value="exception">

        <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="32" scale="0"/>

      </field>

      <field name="value" primary-key="true" null-value="exception">

        <column name="VALUE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="32" scale="0"/>

      </field>

      <field name="documentNode"  null-value="exception">  <!-- N-1
(ref) -->

        <column name="DOCUMENT_NODE_ID" target="DOCUMENT_NODE_ID"
jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="DocumentNodePropertyImpl.documentNode"/>

      </field>

      <field name="definition"  null-value="exception">  <!-- N-1 (ref)
-->

        <column name="NAME" target="NAME" jdbc-type="VARCHAR"
sql-type="VARCHAR2" length="32" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="DocumentNodePropertyImpl.definition"/>

      </field>

    </class>

 

    <interface name="com.peacetech.dts.DocumentRelationshipType"/>

 

    <class name="DocumentRelationshipTypeImpl"
table="DOCUMENT_RELATIONSHIP_TYPE" identity-type="application"
objectid-class="com.peacetech.dts.jdo.DocumentRelationshipTypeImpl$OID">

      <implements name="com.peacetech.dts.DocumentRelationshipType"/>

      <version strategy="version-number" column="JDO_LOCK"/>

      <field name="id" primary-key="true" null-value="exception">

        <column name="DOCUMENT_RELATIONSHIP_TYPE" jdbc-type="DECIMAL"
sql-type="NUMBER" length="9" scale="0"/>

      </field>

      <field name="description">

        <column name="DESCRIPTION" jdbc-type="VARCHAR"
sql-type="VARCHAR2" length="120" scale="0"/>

      </field>

    </class>

 

    <interface name="com.peacetech.dts.Employee"/>

 

    <class name="EmployeeImpl" table="EMPLOYEE"
identity-type="application"
objectid-class="com.peacetech.dts.jdo.EmployeeImpl$OID">

      <implements name="com.peacetech.dts.Employee"/>

      <inheritance strategy="new-table">

        <discriminator strategy="value-map" value="610"
column="JDO_CLASS"/>

      </inheritance>

      <version strategy="version-number" column="JDO_LOCK"/>

      <field name="id" primary-key="true" null-value="exception">

        <column name="EMPLOYEE_ID" jdbc-type="DECIMAL" sql-type="NUMBER"
length="12" scale="0"/>

      </field>

      <field name="firstName">

        <column name="FIRST_NAME" jdbc-type="VARCHAR"
sql-type="VARCHAR2" length="32" scale="0"/>

      </field>

      <field name="lastName">

        <column name="LAST_NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="32" scale="0"/>

      </field>

      <field name="middleName">

        <column name="MIDDLE_NAME" jdbc-type="VARCHAR"
sql-type="VARCHAR2" length="32" scale="0"/>

      </field>

    </class>

 

    <interface name="com.peacetech.dts.OrgUnit"/>

 

    <class name="OrgUnitImpl" table="ORG_UNIT"
identity-type="application"
objectid-class="com.peacetech.dts.jdo.OrgUnitImpl$OID">

      <implements name="com.peacetech.dts.OrgUnit"/>

      <inheritance strategy="new-table">

        <discriminator strategy="value-map" value="600"
column="JDO_CLASS"/>

      </inheritance>

      <version strategy="version-number" column="JDO_LOCK"/>

      <field name="id" primary-key="true" null-value="exception">

        <column name="ORG_UNIT_ID" jdbc-type="DECIMAL" sql-type="NUMBER"
length="12" scale="0"/>

      </field>

      <field name="name">

        <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="128" scale="0"/>

      </field>

    </class>

 

    <interface name="com.peacetech.dts.PropertyDefinition"/>

 

    <class name="PropertyDefinitionImpl" table="PROPERTY_DEFINITION"
identity-type="application"
objectid-class="com.peacetech.dts.jdo.PropertyDefinitionImpl$OID">

      <implements name="com.peacetech.dts.PropertyDefinition"/>

      <version strategy="version-number" column="JDO_LOCK"/>

      <field name="name" primary-key="true" null-value="exception">

        <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="32" scale="0"/>

      </field>

      <field name="description">

        <column name="DESCRIPTION" jdbc-type="VARCHAR"
sql-type="VARCHAR2" length="200" scale="0"/>

      </field>

      <field name="active" null-value="exception">

        <column name="IS_ACTIVE" jdbc-type="DECIMAL" sql-type="NUMBER"
length="1" scale="0"/>

      </field>

      <field name="lookup" null-value="exception">

        <column name="IS_LOOKUP" jdbc-type="DECIMAL" sql-type="NUMBER"
length="1" scale="0"/>

      </field>

      <field name="lookupSortOrder" null-value="exception"
persistence-modifier="persistent" default-fetch-group="true">

        <extension vendor-name="kodo" key="externalizer"
value="toSqlValue"/>

        <extension vendor-name="kodo" key="factory"
value="fromSqlValue"/>

        <column name="LOOKUP_SORT_ORDER" jdbc-type="DECIMAL"
sql-type="NUMBER" length="9" scale="0"/>

      </field>

      <field name="multiValue" null-value="exception">

        <column name="IS_MULTI_VALUE" jdbc-type="DECIMAL"
sql-type="NUMBER" length="1" scale="0"/>

      </field>

      <field name="defaultValue">

        <column name="DEFAULT_VALUE" jdbc-type="VARCHAR"
sql-type="VARCHAR2" length="32" scale="0"/>

      </field>

      <field name="lookupValues" table="PROPERTY_LOOKUP"
mapped-by="definition"> <!-- 1-N -->

        <collection
element-type="com.peacetech.dts.jdo.PropertyLookupImpl"/>

        <extension vendor-name="kodo" key="fetch-group"
value="PropertyDefinitionImpl.lookupValues"/>

      </field>

    </class>

 

    <interface name="com.peacetech.dts.PropertyLookup"/>

 

    <class name="PropertyLookupImpl" table="PROPERTY_LOOKUP"
identity-type="application"
objectid-class="com.peacetech.dts.jdo.PropertyLookupImpl$OID">

      <implements name="com.peacetech.dts.PropertyLookup"/>

      <version strategy="version-number" column="JDO_LOCK"/>

      <field name="nameId" primary-key="true" null-value="exception">

        <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="32" scale="0"/>

      </field>

      <field name="code" primary-key="true" null-value="exception">

        <column name="CODE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="16" scale="0"/>

      </field>

      <field name="description">

        <column name="DESCRIPTION" jdbc-type="VARCHAR"
sql-type="VARCHAR2" length="120" scale="0"/>

      </field>

      <field name="shortDescription">

        <column name="SHORT_DESCRIPTION" jdbc-type="VARCHAR"
sql-type="VARCHAR2" length="64" scale="0"/>

      </field>

      <field name="sortOrder" null-value="exception">

        <column name="SORT_ORDER" jdbc-type="DECIMAL" sql-type="NUMBER"
length="9" scale="0"/>

      </field>

      <field name="active" null-value="exception">

        <column name="IS_ACTIVE" jdbc-type="DECIMAL" sql-type="NUMBER"
length="1" scale="0"/>

      </field>

      <field name="definition"  null-value="exception">  <!-- N-1 (ref)
-->

        <column name="NAME" target="NAME" jdbc-type="VARCHAR"
sql-type="VARCHAR2" length="32" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="PropertyLookupImpl.definition"/>

      </field>

    </class>

 

    <interface name="com.peacetech.dts.RelatedDocument"/>

 

    <class name="RelatedDocumentImpl" table="RELATED_DOCUMENT"
identity-type="application"
objectid-class="com.peacetech.dts.jdo.RelatedDocumentImpl$OID">

      <implements name="com.peacetech.dts.RelatedDocument"/>

      <version strategy="version-number" column="JDO_LOCK"/>

      <field name="sourceId" primary-key="true" null-value="exception">

        <column name="SOURCE" jdbc-type="DECIMAL" sql-type="NUMBER"
length="12" scale="0"/>

      </field>

      <field name="relationshipTypeId" primary-key="true"
null-value="exception">

        <column name="RELATIONSHIP_TYPE" jdbc-type="DECIMAL"
sql-type="NUMBER" length="9" scale="0"/>

      </field>

      <field name="targetId" primary-key="true" null-value="exception">

        <column name="TARGET" jdbc-type="DECIMAL" sql-type="NUMBER"
length="12" scale="0"/>

      </field>

      <field name="notes">

        <column name="NOTES" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="120" scale="0"/>

      </field>

      <field name="source"  null-value="exception">  <!-- N-1 (ref) -->

        <column name="SOURCE" target="DOCUMENT_NODE_ID"
jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="RelatedDocumentImpl.source"/>

      </field>

      <field name="target"  null-value="exception">  <!-- N-1 (ref) -->

        <column name="TARGET" target="DOCUMENT_NODE_ID"
jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="RelatedDocumentImpl.target"/>

      </field>

      <field name="relationshipType"  null-value="exception">  <!-- N-1
(ref) -->

        <column name="RELATIONSHIP_TYPE"
target="DOCUMENT_RELATIONSHIP_TYPE" jdbc-type="DECIMAL"
sql-type="NUMBER" length="9" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="RelatedDocumentImpl.relationshipType"/>

      </field>

    </class>

 

    <interface name="com.peacetech.dts.TemplateNode"/>

 

    <class name="TemplateNodeImpl" table="TEMPLATE_NODE"
identity-type="application"
objectid-class="com.peacetech.dts.jdo.TemplateNodeImpl$OID">

      <extension vendor-name="kodo" key="subclass-fetch-mode"
value="none"/>

      <implements name="com.peacetech.dts.TemplateNode"/>

      <inheritance strategy="new-table">

        <discriminator strategy="value-map" value="100"
column="JDO_CLASS"/>

      </inheritance>

      <version strategy="version-number" column="JDO_LOCK"/>

      <field name="id" primary-key="true" null-value="exception">

        <column name="TEMPLATE_NODE_ID" jdbc-type="DECIMAL"
sql-type="NUMBER" length="12" scale="0"/>

      </field>

      <field name="name" null-value="exception">

        <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="64" scale="0"/>

      </field>

      <field name="createDate">

        <column name="CREATE_DATE" jdbc-type="DATE" sql-type="DATE"
length="7" scale="0"/>

      </field>

      <field name="updateDate">

        <column name="UPDATE_DATE" jdbc-type="DATE" sql-type="DATE"
length="7" scale="0"/>

      </field>

      <field name="updateUser">

        <column name="UPDATE_USER" jdbc-type="VARCHAR"
sql-type="VARCHAR2" length="32" scale="0"/>

      </field>

      <field name="parent" >  <!-- N-1 (ref) -->

        <column name="PARENT" target="TEMPLATE_NODE_ID"
jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="TemplateNodeImpl.parent"/>

      </field>

      <field name="subNodes" table="TEMPLATE_NODE" mapped-by="parent">
<!-- 1-N -->

        <collection
element-type="com.peacetech.dts.jdo.TemplateNodeImpl"/>

        <order column="PARENT_SORT_ORDER"/>

        <extension vendor-name="kodo" key="fetch-group"
value="TemplateNodeImpl.subNodes"/>

      </field>

      <field name="priorVersion" >  <!-- N-1 (ref) -->

        <column name="PRIOR_VERSION" target="TEMPLATE_NODE_ID"
jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="TemplateNodeImpl.priorVersion"/>

      </field>

      <field name="nextVersion" table="TEMPLATE_NODE"
mapped-by="priorVersion"> <!-- 1-1 -->

        <extension vendor-name="kodo" key="fetch-group"
value="TemplateNodeImpl.nextVersion"/>

      </field>

      <field name="properties" table="TEMPLATE_NODE_PROPERTY"
mapped-by="templateNode"> <!-- 1-N -->

        <collection
element-type="com.peacetech.dts.jdo.TemplateNodePropertyImpl"/>

        <extension vendor-name="kodo" key="fetch-group"
value="TemplateNodeImpl.properties"/>

      </field>

      <field name="ownerComponent"  null-value="exception">  <!-- N-1
(ref) -->

        <column name="OWNER_COMPONENT" target="TEMPLATE_NODE_ID"
jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="TemplateNodeImpl.ownerComponent"/>

      </field>

    </class>

 

    <interface name="com.peacetech.dts.TemplateNodeProperty"/>

 

    <class name="TemplateNodePropertyImpl"
table="TEMPLATE_NODE_PROPERTY" identity-type="application"
objectid-class="com.peacetech.dts.jdo.TemplateNodePropertyImpl$OID">

      <implements name="com.peacetech.dts.TemplateNodeProperty"/>

      <version strategy="version-number" column="JDO_LOCK"/>

      <field name="templateNodeId" primary-key="true"
null-value="exception">

        <column name="TEMPLATE_NODE_ID" jdbc-type="DECIMAL"
sql-type="NUMBER" length="12" scale="0"/>

      </field>

      <field name="nameId" primary-key="true" null-value="exception">

        <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="32" scale="0"/>

      </field>

      <field name="value" primary-key="true" null-value="exception">

        <column name="VALUE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="32" scale="0"/>

      </field>

      <field name="definition"  null-value="exception">  <!-- N-1 (ref)
-->

        <column name="NAME" target="NAME" jdbc-type="VARCHAR"
sql-type="VARCHAR2" length="32" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="TemplateNodePropertyImpl.definition"/>

      </field>

      <field name="templateNode"  null-value="exception">  <!-- N-1
(ref) -->

        <column name="TEMPLATE_NODE_ID" target="TEMPLATE_NODE_ID"
jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="TemplateNodePropertyImpl.templateNode"/>

      </field>

    </class>

 

    <interface name="com.peacetech.dts.TemplateRule"/>

 

    <class name="TemplateRuleImpl" table="TEMPLATE_RULE"
identity-type="application"
objectid-class="com.peacetech.dts.jdo.TemplateRuleImpl$OID">

      <implements name="com.peacetech.dts.TemplateRule"/>

      <version strategy="version-number" column="JDO_LOCK"/>

      <field name="id" primary-key="true" null-value="exception">

        <column name="RULE_ID" jdbc-type="DECIMAL" sql-type="NUMBER"
length="12" scale="0"/>

      </field>

      <field name="type" null-value="exception">

        <column name="TYPE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="32" scale="0"/>

      </field>

      <field name="name">

        <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="32" scale="0"/>

      </field>

      <field name="description">

        <column name="DESCRIPTION" jdbc-type="VARCHAR"
sql-type="VARCHAR2" length="80" scale="0"/>

      </field>

      <field name="text">

        <column name="TEXT" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="1024" scale="0"/>

      </field>

      <field name="content"  null-value="exception">  <!-- N-1 (ref) -->

        <column name="CONTENT_ID" target="CONTENT_ID"
jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="TemplateRuleImpl.content"/>

      </field>

    </class>

 

    <interface name="com.peacetech.dts.ComponentNode"/>

 

    <class name="ComponentNodeImpl" identity-type="application"
persistence-capable-superclass="com.peacetech.dts.jdo.TemplateNodeImpl">

      <implements name="com.peacetech.dts.ComponentNode"/>

      <inheritance strategy="superclass-table">

        <discriminator value="130"/>

      </inheritance>

      <field name="referenceNumber">

        <column name="REFERENCE_NUMBER" jdbc-type="VARCHAR"
sql-type="VARCHAR2" length="16" scale="0"/>

      </field>

      <field name="ownedContent" table="CONTENT" mapped-by="owner"> <!--
1-1 -->

        <extension vendor-name="kodo" key="fetch-group"
value="ComponentNodeImpl.ownedContent"/>

      </field>

    </class>

 

    <interface name="com.peacetech.dts.Template"/>

 

    <class name="TemplateImpl" identity-type="application"
persistence-capable-superclass="com.peacetech.dts.jdo.ComponentImpl">

      <implements name="com.peacetech.dts.Template"/>

      <inheritance strategy="superclass-table">

        <discriminator value="120"/>

      </inheritance>

      <field name="notes">

        <column name="NOTES" jdbc-type="CLOB" sql-type="CLOB"
length="-1" scale="0"/>

      </field>

    </class>

 

    <interface name="com.peacetech.dts.ShareNode"/>

 

    <class name="ShareNodeImpl" identity-type="application"
persistence-capable-superclass="com.peacetech.dts.jdo.ComponentNodeImpl"
>

      <implements name="com.peacetech.dts.ShareNode"/>

      <inheritance strategy="superclass-table">

        <discriminator value="150"/>

      </inheritance>

      <field name="target"  null-value="exception">  <!-- N-1 (ref) -->

        <column name="SHARE_TARGET" target="TEMPLATE_NODE_ID"
jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="ShareNodeImpl.target"/>

      </field>

    </class>

 

    <interface name="com.peacetech.dts.DocumentContent"/>

 

    <class name="DocumentContentImpl" identity-type="application"
persistence-capable-superclass="com.peacetech.dts.jdo.ContentImpl">

      <implements name="com.peacetech.dts.DocumentContent"/>

      <inheritance strategy="superclass-table">

        <discriminator value="220"/>

      </inheritance>

    </class>

 

    <interface name="com.peacetech.dts.DocumentFieldMultiValue"/>

 

    <class name="DocumentFieldMultiValueImpl"
identity-type="application"
persistence-capable-superclass="com.peacetech.dts.jdo.DocumentFieldImpl"
>

      <implements name="com.peacetech.dts.DocumentFieldMultiValue"/>

      <inheritance strategy="superclass-table">

        <discriminator value="520"/>

      </inheritance>

      <field name="values" default-fetch-group="false"
null-value="exception" persistence-modifier="persistent">

        <extension vendor-name="kodo" key="externalizer"
value="com.peacetech.dts.jdo.helpers.Externalizers.fromStringCollection"
/>

        <extension vendor-name="kodo" key="factory"
value="com.peacetech.dts.jdo.helpers.Externalizers.toStringCollection"/>

        <column name="VALUE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
length="1024" scale="0"/>

      </field>

    </class>

 

    <interface name="com.peacetech.dts.ShareLink"/>

 

    <class name="ShareLinkImpl" identity-type="application"
persistence-capable-superclass="com.peacetech.dts.jdo.ShareNodeImpl">

      <implements name="com.peacetech.dts.ShareLink"/>

      <inheritance strategy="superclass-table">

        <discriminator value="160"/>

      </inheritance>

      <field name="topicExcluded" null-value="exception">

        <column name="IS_TOPIC_EXCLUDED" jdbc-type="DECIMAL"
sql-type="NUMBER" length="1" scale="0"/>

      </field>

      <field name="contentOverride" >  <!-- N-1 (ref) -->

        <column name="CONTENT_ID" target="CONTENT_ID"
jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>

        <extension vendor-name="kodo" key="fetch-group"
value="ShareLinkImpl.contentOverride"/>

      </field>

    </class>

 

    <interface name="com.peacetech.dts.DocumentSharePoint"/>

 

    <class name="DocumentSharePointImpl" identity-type="application"
persistence-capable-superclass="com.peacetech.dts.jdo.DocumentItemImpl">

      <implements name="com.peacetech.dts.DocumentSharePoint"/>

      <inheritance strategy="superclass-table">

        <discriminator value="420"/>

      </inheritance>

    </class>

 

    <interface name="com.peacetech.dts.DocumentItem"/>

 

    <class name="DocumentItemImpl" identity-type="application"
persistence-capable-superclass="com.peacetech.dts.jdo.DocumentNodeImpl">

      <implements name="com.peacetech.dts.DocumentItem"/>

      <inheritance strategy="superclass-table">

        <discriminator value="410"/>

      </inheritance>

      <field name="referenceNumber">

        <column name="REFERENCE_NUMBER" jdbc-type="VARCHAR"
sql-type="VARCHAR2" length="16" scale="0"/>

      </field>

    </class>

 

    <interface name="com.peacetech.dts.SharePoint"/>

 

    <class name="SharePointImpl" identity-type="application"
persistence-capable-superclass="com.peacetech.dts.jdo.ShareNodeImpl">

      <implements name="com.peacetech.dts.SharePoint"/>

      <inheritance strategy="superclass-table">

        <discriminator value="170"/>

      </inheritance>

      <field name="embedded" null-value="exception">

        <column name="IS_EMBEDDED_SHARE" jdbc-type="DECIMAL"
sql-type="N
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Why would Kodo refuse to batch inserts in certain tables? Big performance drop migrating to Kodo 4.1

Marc Prud'hommeaux
Alex-

Since the non-batched statement contains a Date field, this is due to  
the workaround for the Oracle JDBC driver bug I mentioned before.

Kodo will not batch statements that contains a Date field when  
interacting with Oracle.



On Oct 17, 2006, at 1:38 PM, Roytman, Alex wrote:

> Yes it will be wrapped by email though
>
>
>
> 15  WARN   [main] openjpa.Runtime - The property named
> "kodo.jdbc.SequenceFactory" was not recognized and will be ignored,
> although the name closely matches a valid property called
> "kodo.jdbc.SchemaFactory".
>
> 15  WARN   [main] openjpa.Runtime - The property named
> "kodo.jdbc.ClassIndicator" was not recognized and will be ignored,
> although the name closely matches a valid property called
> "kodo.jdbc.MappingFactory".
>
> 47  INFO   [main] openjpa.Runtime - Starting BEA Kodo 4.1.0 with
> patches:
>
>     Kodo JDO Utilities vtip-revision
>
> 62  INFO   [main] openjpa.jdbc.JDBC - Using dictionary class
> "org.apache.openjpa.jdbc.sql.OracleDictionary".
>
> 328  INFO   [main] openjpa.jdbc.JDBC - oracle-batch-override
>
> 1578  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 21057622 SELECT t0.JDO_LOCK, t0.IS_ACTIVE,
> t0.DEFAULT_VALUE, t0.DESCRIPTION, t0.IS_LOOKUP, t0.LOOKUP_SORT_ORDER,
> t0.IS_MULTI_VALUE FROM DTS.PROPERTY_DEFINITION t0 WHERE t0.NAME = ?
> [params=(String) IC]
>
> 1578  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1593  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 21057622 SELECT t0.JDO_LOCK, t0.IS_ACTIVE,
> t0.DEFAULT_VALUE, t0.DESCRIPTION, t0.IS_LOOKUP, t0.LOOKUP_SORT_ORDER,
> t0.IS_MULTI_VALUE FROM DTS.PROPERTY_DEFINITION t0 WHERE t0.NAME = ?
> [params=(String) DocType]
>
> 1593  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1593  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 21057622 SELECT t0.JDO_LOCK, t0.IS_ACTIVE,
> t0.DEFAULT_VALUE, t0.DESCRIPTION, t0.IS_LOOKUP, t0.LOOKUP_SORT_ORDER,
> t0.IS_MULTI_VALUE FROM DTS.PROPERTY_DEFINITION t0 WHERE t0.NAME = ?
> [params=(String) GC]
>
> 1593  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1593  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 21057622 SELECT t0.JDO_LOCK, t0.IS_ACTIVE,
> t0.DEFAULT_VALUE, t0.DESCRIPTION, t0.IS_LOOKUP, t0.LOOKUP_SORT_ORDER,
> t0.IS_MULTI_VALUE FROM DTS.PROPERTY_DEFINITION t0 WHERE t0.NAME = ?
> [params=(String) ClauseId]
>
> 1593  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 15513215 INSERT INTO DTS.DOCUMENT  
> (DOCUMENT_NODE_ID,
> DOCUMENT_NUMBER, TEMPLATE_ID, ORG_UNIT_ID, PREPARER, TITLE,
> IS_PUBLISHED, PUBLISH_DATE) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
> [params=(long) 529800, (String) {529800}, (long) 9432, (long) 1,  
> (long)
> 1, (null) null, (int) 0, (null) null]
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 12675864 INSERT INTO DTS.DOCUMENT_FIELD
> (DOCUMENT_NODE_ID, NAME, CONTENT_ID, VALUE, JDO_CLASS, JDO_LOCK)  
> VALUES
> (?, ?, ?, ?, ?, ?) [params=(long) 529802, (String) preferences, (long)
> 2117, (null) null, (int) 520, (int) 1]
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 12675864 INSERT INTO DTS.DOCUMENT_FIELD
> (DOCUMENT_NODE_ID, NAME, CONTENT_ID, VALUE, JDO_CLASS, JDO_LOCK)  
> VALUES
> (?, ?, ?, ?, ?, ?) [params=(long) 529801, (String) preferences, (long)
> 2116, (null) null, (int) 520, (int) 1]
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 12675864 INSERT INTO DTS.DOCUMENT_FIELD
> (DOCUMENT_NODE_ID, NAME, CONTENT_ID, VALUE, JDO_CLASS, JDO_LOCK)  
> VALUES
> (?, ?, ?, ?, ?, ?) [params=(long) 529802, (String) address, (long)  
> 2117,
> (null) null, (int) 510, (int) 1]
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 12675864 INSERT INTO DTS.DOCUMENT_FIELD
> (DOCUMENT_NODE_ID, NAME, CONTENT_ID, VALUE, JDO_CLASS, JDO_LOCK)  
> VALUES
> (?, ?, ?, ?, ?, ?) [params=(long) 529801, (String) address, (long)  
> 2116,
> (null) null, (int) 510, (int) 1]
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 12675864 INSERT INTO DTS.DOCUMENT_FIELD
> (DOCUMENT_NODE_ID, NAME, CONTENT_ID, VALUE, JDO_CLASS, JDO_LOCK)  
> VALUES
> (?, ?, ?, ?, ?, ?) [params=(long) 529801, (String) address, (long)  
> 2116,
> (null) null, (int) 510, (int) 1]
>
> 1640  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [15
> ms] spent
>
> 1640  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 6169134 INSERT INTO DTS.DOCUMENT_NODE
> (DOCUMENT_NODE_ID, OWNER_DOCUMENT, LOCAL_ROOT, PARENT, NAME,
> CREATE_DATE, UPDATE_DATE, UPDATE_USER, JDO_CLASS, JDO_LOCK) VALUES (?,
> ?, ?, ?, ?, ?, ?, ?, ?, ?) [params=(long) 529800, (long) 529800,  
> (long)
> 529800, (null) null, (String) d529800, (Date) 2006-10-16, (Date)
> 2006-10-16, (String) dts.test, (int) 440, (int) 1]
>
> 1640  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1640  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 1440568 INSERT INTO DTS.DOCUMENT_NODE
> (DOCUMENT_NODE_ID, OWNER_DOCUMENT, LOCAL_ROOT, PARENT,
> PARENT_SORT_ORDER, NAME, CONTENT_ID, ORIGINAL_CONTENT,  
> REFERENCE_NUMBER,
> IS_GROUP, IS_SELECTED_BY_USER, IS_SELECTED_BY_RULE, CREATE_DATE,
> UPDATE_DATE, UPDATE_USER, JDO_CLASS, JDO_LOCK) VALUES  
> (?, ?, ?, ?, ?, ?,
> ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [params=(long) 529801, (long) 529800,
> (long) 529800, (long) 529800, (int) 0, (String) t1, (long) 2116,  
> (null)
> null, (null) null, (int) 0, (null) null, (int) 0, (Date) 2006-10-16,
> (Date) 2006-10-16, (String) dts.test, (int) 430, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [16
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 1440568 INSERT INTO DTS.DOCUMENT_NODE
> (DOCUMENT_NODE_ID, OWNER_DOCUMENT, LOCAL_ROOT, PARENT,
> PARENT_SORT_ORDER, NAME, CONTENT_ID, ORIGINAL_CONTENT,  
> REFERENCE_NUMBER,
> IS_GROUP, IS_SELECTED_BY_USER, IS_SELECTED_BY_RULE, CREATE_DATE,
> UPDATE_DATE, UPDATE_USER, JDO_CLASS, JDO_LOCK) VALUES  
> (?, ?, ?, ?, ?, ?,
> ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [params=(long) 529802, (long) 529800,
> (long) 529800, (long) 529801, (int) 0, (String) t1.1, (long) 2117,
> (null) null, (null) null, (int) 0, (null) null, (int) 0, (Date)
> 2006-10-16, (Date) 2006-10-16, (String) dts.test, (int) 430, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529802, (String) IC, (String) IC1, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529801, (String) ClauseId, (String) CRS, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529802, (String) GC, (String) CRS, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529800, (String) DocType, (String) RFP, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529802, (String) GC, (String) EDUC, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529801, (String) GC, (String) CRS, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529802, (String) ClauseId, (String) CRS, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529800, (String) IC, (String) NHLBI, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529802, (String) IC, (String) IC2, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529801, (String) GC, (String) EDUC, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529800, (String) IC, (String) NCI, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529801, (String) IC, (String) IC1, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529801, (String) IC, (String) IC2, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529801, (String) IC, (String) IC2, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
>
>
>
>
>
>
>
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <!DOCTYPE jdo PUBLIC "-//Sun Microsystems, Inc.//DTD Java Data Objects
> Metadata 2.0//EN" "http://java.sun.com/dtd/jdo_2_0.dtd">
>
> <jdo>
>
>   <package name="com.peacetech.dts.jdo">
>
>
>
>     <interface name="com.peacetech.dts.ApplicationProperty"/>
>
>
>
>     <class name="ApplicationPropertyImpl" table="APPLICATION_PROPERTY"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.ApplicationPropertyImpl$OID">
>
>       <implements name="com.peacetech.dts.ApplicationProperty"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="name" primary-key="true" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="value">
>
>         <column name="VALUE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="250" scale="0"/>
>
>       </field>
>
>       <field name="modifiable" null-value="exception">
>
>         <column name="MODIFIABLE" jdbc-type="DECIMAL" sql-
> type="NUMBER"
> length="1" scale="0"/>
>
>       </field>
>
>       <field name="runtimeModifiable" null-value="exception">
>
>         <column name="RUNTIME_MODIFIABLE" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="1" scale="0"/>
>
>       </field>
>
>       <field name="description">
>
>         <column name="DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="256" scale="0"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.Attribute"/>
>
>
>
>     <class name="AttributeImpl" table="ATTRIBUTE"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.AttributeImpl$OID">
>
>       <implements name="com.peacetech.dts.Attribute"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="id" primary-key="true" null-value="exception">
>
>         <column name="ATTRIBUTE_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="name" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="description">
>
>         <column name="DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="200" scale="0"/>
>
>       </field>
>
>       <field name="active" null-value="exception">
>
>         <column name="IS_ACTIVE" jdbc-type="DECIMAL" sql-type="NUMBER"
> length="1" scale="0"/>
>
>       </field>
>
>       <field name="shared" null-value="exception">
>
>         <column name="IS_SHARED" jdbc-type="DECIMAL" sql-type="NUMBER"
> length="1" scale="0"/>
>
>       </field>
>
>       <field name="lookup" null-value="exception">
>
>         <column name="IS_LOOKUP" jdbc-type="DECIMAL" sql-type="NUMBER"
> length="1" scale="0"/>
>
>       </field>
>
>       <field name="lookupSortOrder" null-value="exception"
> persistence-modifier="persistent" default-fetch-group="true">
>
>         <extension vendor-name="kodo" key="externalizer"
> value="toSqlValue"/>
>
>         <extension vendor-name="kodo" key="factory"
> value="fromSqlValue"/>
>
>         <column name="LOOKUP_SORT_ORDER" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="9" scale="0"/>
>
>       </field>
>
>       <field name="multiValue" null-value="exception">
>
>         <column name="IS_MULTI_VALUE" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="1" scale="0"/>
>
>       </field>
>
>       <field name="required" null-value="exception">
>
>         <column name="IS_REQUIRED" jdbc-type="DECIMAL" sql-
> type="NUMBER"
> length="1" scale="0"/>
>
>       </field>
>
>       <field name="defaultValue">
>
>         <column name="DEFAULT_VALUE" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="100" scale="0"/>
>
>       </field>
>
>       <field name="lookupValues" table="ATTRIBUTE_LOOKUP"
> mapped-by="attribute"> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.AttributeLookupImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="AttributeImpl.lookupValues"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.AttributeLookup"/>
>
>
>
>     <class name="AttributeLookupImpl" table="ATTRIBUTE_LOOKUP"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.AttributeLookupImpl$OID">
>
>       <implements name="com.peacetech.dts.AttributeLookup"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="attributeId" primary-key="true"
> null-value="exception">
>
>         <column name="ATTRIBUTE_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="code" primary-key="true" null-value="exception">
>
>         <column name="CODE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="16" scale="0"/>
>
>       </field>
>
>       <field name="description">
>
>         <column name="DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="120" scale="0"/>
>
>       </field>
>
>       <field name="shortDescription">
>
>         <column name="SHORT_DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="64" scale="0"/>
>
>       </field>
>
>       <field name="sortOrder" null-value="exception">
>
>         <column name="SORT_ORDER" jdbc-type="DECIMAL" sql-
> type="NUMBER"
> length="9" scale="0"/>
>
>       </field>
>
>       <field name="attribute"  null-value="exception">  <!-- N-1 (ref)
> -->
>
>         <column name="ATTRIBUTE_ID" target="ATTRIBUTE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="AttributeLookupImpl.attribute"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.Component"/>
>
>
>
>     <class name="ComponentImpl" table="COMPONENT"
> identity-type="application"
> persistence-capable-
> superclass="com.peacetech.dts.jdo.TemplateNodeImpl">
>
>       <implements name="com.peacetech.dts.Component"/>
>
>
>
>       <inheritance strategy="new-table">
>
>         <join>
>
>           <column name="TEMPLATE_NODE_ID" target="TEMPLATE_NODE_ID"/>
>
>         </join>
>
>         <discriminator value="110"/>
>
>       </inheritance>
>
>       <field name="released" null-value="exception">
>
>         <column name="IS_RELEASED" jdbc-type="DECIMAL" sql-
> type="NUMBER"
> length="1" scale="0"/>
>
>       </field>
>
>       <field name="effectiveDate">
>
>         <column name="EFFECTIVE_DATE" jdbc-type="DATE" sql-type="DATE"
> length="7" scale="0"/>
>
>       </field>
>
>       <field name="description">
>
>         <column name="DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="200" scale="0"/>
>
>       </field>
>
>       <field name="preparer"  null-value="exception">  <!-- N-1 (ref)
> -->
>
>         <column name="PREPARER" target="EMPLOYEE_ID" jdbc-
> type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ComponentImpl.preparer"/>
>
>       </field>
>
>       <field name="orgUnit"  null-value="exception">  <!-- N-1  
> (ref) -->
>
>         <column name="ORG_UNIT_ID" target="ORG_UNIT_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ComponentImpl.orgUnit"/>
>
>       </field>
>
>       <field name="container"  null-value="exception">  <!-- N-1 (ref)
> -->
>
>         <column name="CONTAINER_ID" target="CONTAINER_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ComponentImpl.container"/>
>
>       </field>
>
>        <field name="attributes" table="COMPONENT_ATTRIBUTE"> <!-- M-N
> -->
>
>         <collection element-
> type="com.peacetech.dts.jdo.AttributeImpl"/>
>
>         <join>
>
>           <column name="TEMPLATE_NODE_ID" target="TEMPLATE_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         </join>
>
>         <element>
>
>           <column name="ATTRIBUTE_ID" target="ATTRIBUTE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         </element>
>
>         <order column="SORT_ORDER"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ComponentImpl.attributes"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.Container"/>
>
>
>
>     <class name="ContainerImpl" table="CONTAINER"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.ContainerImpl$OID">
>
>       <implements name="com.peacetech.dts.Container"/>
>
>       <inheritance strategy="new-table">
>
>         <discriminator strategy="value-map" value="300"
> column="JDO_CLASS"/>
>
>       </inheritance>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="id" primary-key="true" null-value="exception">
>
>         <column name="CONTAINER_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="name" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="48" scale="0"/>
>
>       </field>
>
>       <field name="description">
>
>         <column name="DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="400" scale="0"/>
>
>       </field>
>
>       <field name="parent" >  <!-- N-1 (ref) -->
>
>         <column name="PARENT" target="CONTAINER_ID" jdbc-
> type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ContainerImpl.parent"/>
>
>       </field>
>
>       <field name="subNodes" table="CONTAINER" mapped-by="parent">  
> <!--
> 1-N -->
>
>         <collection element-
> type="com.peacetech.dts.jdo.ContainerImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ContainerImpl.subNodes"/>
>
>       </field>
>
>       <field name="properties" table="CONTAINER_PROPERTY"
> mapped-by="container"> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.ContainerPropertyImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ContainerImpl.properties"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.ContainerProperty"/>
>
>
>
>     <class name="ContainerPropertyImpl" table="CONTAINER_PROPERTY"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.ContainerPropertyImpl$OID">
>
>       <implements name="com.peacetech.dts.ContainerProperty"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="containerId" primary-key="true"
> null-value="exception">
>
>         <column name="CONTAINER_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="nameId" primary-key="true" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="value" primary-key="true" null-value="exception">
>
>         <column name="VALUE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="container"  null-value="exception">  <!-- N-1 (ref)
> -->
>
>         <column name="CONTAINER_ID" target="CONTAINER_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ContainerPropertyImpl.container"/>
>
>       </field>
>
>       <field name="definition"  null-value="exception">  <!-- N-1  
> (ref)
> -->
>
>         <column name="NAME" target="NAME" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ContainerPropertyImpl.definition"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.Content"/>
>
>
>
>     <class name="ContentImpl" table="CONTENT"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.ContentImpl$OID">
>
>       <implements name="com.peacetech.dts.Content"/>
>
>       <inheritance strategy="new-table">
>
>         <discriminator strategy="value-map" value="200"
> column="JDO_CLASS"/>
>
>       </inheritance>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="id" primary-key="true" null-value="exception">
>
>         <column name="CONTENT_ID" jdbc-type="DECIMAL" sql-
> type="NUMBER"
> length="12" scale="0"/>
>
>       </field>
>
>       <field name="tocTitle">
>
>         <column name="TOC_TITLE" jdbc-type="VARCHAR" sql-
> type="VARCHAR2"
> length="500" scale="0"/>
>
>       </field>
>
>       <field name="shortTitle">
>
>         <column name="SHORT_TITLE" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="80" scale="0"/>
>
>       </field>
>
>       <field name="longTitle">
>
>         <column name="LONG_TITLE" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="200" scale="0"/>
>
>       </field>
>
>       <field name="text">
>
>         <column name="TEXT" jdbc-type="CLOB" sql-type="CLOB"  
> length="-1"
> scale="0"/>
>
>       </field>
>
>       <field name="instructions">
>
>         <column name="INSTRUCTIONS" jdbc-type="CLOB" sql-type="CLOB"
> length="-1" scale="0"/>
>
>       </field>
>
>       <field name="fields" table="CONTENT_FIELD" mapped-by="content">
> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.ContentFieldImpl"/>
>
>         <order column="SORT_ORDER"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ContentImpl.fields"/>
>
>       </field>
>
>       <field name="rules" table="TEMPLATE_RULE" mapped-by="content">
> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.TemplateRuleImpl"/>
>
>         <order column="CONTENT_SORT_ORDER"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ContentImpl.rules"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.ContentField"/>
>
>
>
>     <class name="ContentFieldImpl" table="CONTENT_FIELD"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.ContentFieldImpl$OID">
>
>       <implements name="com.peacetech.dts.ContentField"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="contentId" primary-key="true" null-
> value="exception">
>
>         <column name="CONTENT_ID" jdbc-type="DECIMAL" sql-
> type="NUMBER"
> length="12" scale="0"/>
>
>       </field>
>
>       <field name="name" primary-key="true" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="40" scale="0"/>
>
>       </field>
>
>       <field name="dataType">
>
>         <column name="DATA_TYPE" jdbc-type="VARCHAR" sql-
> type="VARCHAR2"
> length="20" scale="0"/>
>
>       </field>
>
>       <field name="format">
>
>         <column name="FORMAT" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="30" scale="0"/>
>
>       </field>
>
>       <field name="required">
>
>         <column name="REQUIRED" jdbc-type="VARCHAR" sql-
> type="VARCHAR2"
> length="80" scale="0"/>
>
>       </field>
>
>       <field name="label">
>
>         <column name="LABEL" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="60" scale="0"/>
>
>       </field>
>
>       <field name="attributes" null-value="exception"
> persistence-modifier="persistent" default-fetch-group="true">
>
>         <extension vendor-name="kodo" key="externalizer"
> value="com.peacetech.dts.jdo.helpers.Externalizers.fromStringMap"/>
>
>         <extension vendor-name="kodo" key="factory"
> value="com.peacetech.dts.jdo.helpers.Externalizers.toStringMap"/>
>
>         <column name="ATTRIBUTES" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="512" scale="0"/>
>
>       </field>
>
>       <field name="multiValue" null-value="exception">
>
>         <column name="IS_MULTI_VALUE" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="1" scale="0"/>
>
>       </field>
>
>       <field name="inputValues" null-value="exception"
> persistence-modifier="persistent" default-fetch-group="true">
>
>         <extension vendor-name="kodo" key="externalizer"
> value="com.peacetech.dts.jdo.helpers.Externalizers.fromStringMap"/>
>
>         <extension vendor-name="kodo" key="factory"
> value="com.peacetech.dts.jdo.helpers.Externalizers.toStringMap"/>
>
>         <column name="INPUT_VALUES" jdbc-type="CLOB" sql-type="CLOB"
> length="-1" scale="0"/>
>
>       </field>
>
>       <field name="content"  null-value="exception">  <!-- N-1  
> (ref) -->
>
>         <column name="CONTENT_ID" target="CONTENT_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ContentFieldImpl.content"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.Document"/>
>
>
>
>     <class name="DocumentImpl" table="DOCUMENT"
> identity-type="application"
> persistence-capable-
> superclass="com.peacetech.dts.jdo.DocumentNodeImpl">
>
>       <implements name="com.peacetech.dts.Document"/>
>
>
>
>       <inheritance strategy="new-table">
>
>         <join>
>
>           <column name="DOCUMENT_NODE_ID" target="DOCUMENT_NODE_ID"/>
>
>         </join>
>
>         <discriminator value="440"/>
>
>       </inheritance>
>
>       <field name="documentNumber" null-value="exception">
>
>         <column name="DOCUMENT_NUMBER" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>       </field>
>
>       <field name="title">
>
>         <column name="TITLE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="200" scale="0"/>
>
>       </field>
>
>       <field name="published" null-value="exception">
>
>         <column name="IS_PUBLISHED" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="1" scale="0"/>
>
>       </field>
>
>       <field name="publishDate">
>
>         <column name="PUBLISH_DATE" jdbc-type="DATE" sql-type="DATE"
> length="7" scale="0"/>
>
>       </field>
>
>       <field name="preparer"  null-value="exception">  <!-- N-1 (ref)
> -->
>
>         <column name="PREPARER" target="EMPLOYEE_ID" jdbc-
> type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentImpl.preparer"/>
>
>       </field>
>
>       <field name="orgUnit"  null-value="exception">  <!-- N-1  
> (ref) -->
>
>         <column name="ORG_UNIT_ID" target="ORG_UNIT_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentImpl.orgUnit"/>
>
>       </field>
>
>       <field name="attributes" table="DOCUMENT_ATTRIBUTE"
> mapped-by="document"> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.DocumentAttributeImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentImpl.attributes"/>
>
>       </field>
>
>       <field name="relatedDocuments" table="RELATED_DOCUMENT"
> mapped-by="source"> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.RelatedDocumentImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentImpl.relatedDocuments"/>
>
>       </field>
>
>       <field name="relatedToDocuments" table="RELATED_DOCUMENT"
> mapped-by="target"> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.RelatedDocumentImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentImpl.relatedToDocuments"/>
>
>       </field>
>
>       <field name="template"  null-value="exception">  <!-- N-1 (ref)
> -->
>
>         <column name="TEMPLATE_ID" target="TEMPLATE_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentImpl.template"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.DocumentAttribute"/>
>
>
>
>     <class name="DocumentAttributeImpl" table="DOCUMENT_ATTRIBUTE"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.DocumentAttributeImpl$OID">
>
>       <implements name="com.peacetech.dts.DocumentAttribute"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="documentNodeId" primary-key="true"
> null-value="exception">
>
>         <column name="DOCUMENT_NODE_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="attributeId" primary-key="true"
> null-value="exception">
>
>         <column name="ATTRIBUTE_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="value">
>
>         <column name="VALUE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="100" scale="0"/>
>
>       </field>
>
>       <field name="attribute"  null-value="exception">  <!-- N-1 (ref)
> -->
>
>         <column name="ATTRIBUTE_ID" target="ATTRIBUTE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentAttributeImpl.attribute"/>
>
>       </field>
>
>       <field name="document"  null-value="exception">  <!-- N-1 (ref)
> -->
>
>         <column name="DOCUMENT_NODE_ID" target="DOCUMENT_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentAttributeImpl.document"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.DocumentField"/>
>
>
>
>     <class name="DocumentFieldImpl" table="DOCUMENT_FIELD"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.DocumentFieldImpl$OID">
>
>       <implements name="com.peacetech.dts.DocumentField"/>
>
>       <inheritance strategy="new-table">
>
>         <discriminator strategy="value-map" value="500"
> column="JDO_CLASS"/>
>
>       </inheritance>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="documentNodeId" primary-key="true"
> null-value="exception">
>
>         <column name="DOCUMENT_NODE_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="nameId" primary-key="true" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="40" scale="0"/>
>
>       </field>
>
>       <field name="definition"  null-value="exception">  <!-- N-1  
> (ref)
> -->
>
>         <column name="CONTENT_ID" target="CONTENT_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <column name="NAME" target="NAME" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="40" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentFieldImpl.definition"/>
>
>       </field>
>
>       <field name="topic"  null-value="exception">  <!-- N-1 (ref) -->
>
>         <column name="DOCUMENT_NODE_ID" target="DOCUMENT_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentFieldImpl.topic"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.DocumentNode"/>
>
>
>
>     <class name="DocumentNodeImpl" table="DOCUMENT_NODE"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.DocumentNodeImpl$OID">
>
>       <implements name="com.peacetech.dts.DocumentNode"/>
>
>       <inheritance strategy="new-table">
>
>         <discriminator strategy="value-map" value="400"
> column="JDO_CLASS"/>
>
>       </inheritance>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="id" primary-key="true" null-value="exception">
>
>         <column name="DOCUMENT_NODE_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="name" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="64" scale="0"/>
>
>       </field>
>
>       <field name="createDate">
>
>         <column name="CREATE_DATE" jdbc-type="DATE" sql-type="DATE"
> length="7" scale="0"/>
>
>       </field>
>
>       <field name="updateDate">
>
>         <column name="UPDATE_DATE" jdbc-type="DATE" sql-type="DATE"
> length="7" scale="0"/>
>
>       </field>
>
>       <field name="updateUser">
>
>         <column name="UPDATE_USER" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>       </field>
>
>       <field name="localRoot"  null-value="exception">  <!-- N-1 (ref)
> -->
>
>         <column name="LOCAL_ROOT" target="DOCUMENT_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentNodeImpl.localRoot"/>
>
>       </field>
>
>       <field name="parent" >  <!-- N-1 (ref) -->
>
>         <column name="PARENT" target="DOCUMENT_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentNodeImpl.parent"/>
>
>       </field>
>
>       <field name="subNodes" table="DOCUMENT_NODE" mapped-by="parent">
> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.DocumentNodeImpl"/>
>
>         <order column="PARENT_SORT_ORDER"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentNodeImpl.subNodes"/>
>
>       </field>
>
>       <field name="properties" table="DOCUMENT_NODE_PROPERTY"
> mapped-by="documentNode"> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.DocumentNodePropertyImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentNodeImpl.properties"/>
>
>       </field>
>
>       <field name="ownerDocument"  null-value="exception">  <!-- N-1
> (ref) -->
>
>         <column name="OWNER_DOCUMENT" target="DOCUMENT_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentNodeImpl.ownerDocument"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.DocumentNodeProperty"/>
>
>
>
>     <class name="DocumentNodePropertyImpl"
> table="DOCUMENT_NODE_PROPERTY" identity-type="application"
> objectid-class="com.peacetech.dts.jdo.DocumentNodePropertyImpl$OID">
>
>       <implements name="com.peacetech.dts.DocumentNodeProperty"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="documentNodeId" primary-key="true"
> null-value="exception">
>
>         <column name="DOCUMENT_NODE_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="nameId" primary-key="true" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="value" primary-key="true" null-value="exception">
>
>         <column name="VALUE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="documentNode"  null-value="exception">  <!-- N-1
> (ref) -->
>
>         <column name="DOCUMENT_NODE_ID" target="DOCUMENT_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentNodePropertyImpl.documentNode"/>
>
>       </field>
>
>       <field name="definition"  null-value="exception">  <!-- N-1  
> (ref)
> -->
>
>         <column name="NAME" target="NAME" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentNodePropertyImpl.definition"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.DocumentRelationshipType"/>
>
>
>
>     <class name="DocumentRelationshipTypeImpl"
> table="DOCUMENT_RELATIONSHIP_TYPE" identity-type="application"
> objectid-class="com.peacetech.dts.jdo.DocumentRelationshipTypeImpl
> $OID">
>
>       <implements name="com.peacetech.dts.DocumentRelationshipType"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="id" primary-key="true" null-value="exception">
>
>         <column name="DOCUMENT_RELATIONSHIP_TYPE" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="9" scale="0"/>
>
>       </field>
>
>       <field name="description">
>
>         <column name="DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="120" scale="0"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.Employee"/>
>
>
>
>     <class name="EmployeeImpl" table="EMPLOYEE"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.EmployeeImpl$OID">
>
>       <implements name="com.peacetech.dts.Employee"/>
>
>       <inheritance strategy="new-table">
>
>         <discriminator strategy="value-map" value="610"
> column="JDO_CLASS"/>
>
>       </inheritance>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="id" primary-key="true" null-value="exception">
>
>         <column name="EMPLOYEE_ID" jdbc-type="DECIMAL" sql-
> type="NUMBER"
> length="12" scale="0"/>
>
>       </field>
>
>       <field name="firstName">
>
>         <column name="FIRST_NAME" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>       </field>
>
>       <field name="lastName">
>
>         <column name="LAST_NAME" jdbc-type="VARCHAR" sql-
> type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="middleName">
>
>         <column name="MIDDLE_NAME" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.OrgUnit"/>
>
>
>
>     <class name="OrgUnitImpl" table="ORG_UNIT"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.OrgUnitImpl$OID">
>
>       <implements name="com.peacetech.dts.OrgUnit"/>
>
>       <inheritance strategy="new-table">
>
>         <discriminator strategy="value-map" value="600"
> column="JDO_CLASS"/>
>
>       </inheritance>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="id" primary-key="true" null-value="exception">
>
>         <column name="ORG_UNIT_ID" jdbc-type="DECIMAL" sql-
> type="NUMBER"
> length="12" scale="0"/>
>
>       </field>
>
>       <field name="name">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="128" scale="0"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.PropertyDefinition"/>
>
>
>
>     <class name="PropertyDefinitionImpl" table="PROPERTY_DEFINITION"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.PropertyDefinitionImpl$OID">
>
>       <implements name="com.peacetech.dts.PropertyDefinition"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="name" primary-key="true" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="description">
>
>         <column name="DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="200" scale="0"/>
>
>       </field>
>
>       <field name="active" null-value="exception">
>
>         <column name="IS_ACTIVE" jdbc-type="DECIMAL" sql-type="NUMBER"
> length="1" scale="0"/>
>
>       </field>
>
>       <field name="lookup" null-value="exception">
>
>         <column name="IS_LOOKUP" jdbc-type="DECIMAL" sql-type="NUMBER"
> length="1" scale="0"/>
>
>       </field>
>
>       <field name="lookupSortOrder" null-value="exception"
> persistence-modifier="persistent" default-fetch-group="true">
>
>         <extension vendor-name="kodo" key="externalizer"
> value="toSqlValue"/>
>
>         <extension vendor-name="kodo" key="factory"
> value="fromSqlValue"/>
>
>         <column name="LOOKUP_SORT_ORDER" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="9" scale="0"/>
>
>       </field>
>
>       <field name="multiValue" null-value="exception">
>
>         <column name="IS_MULTI_VALUE" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="1" scale="0"/>
>
>       </field>
>
>       <field name="defaultValue">
>
>         <column name="DEFAULT_VALUE" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>       </field>
>
>       <field name="lookupValues" table="PROPERTY_LOOKUP"
> mapped-by="definition"> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.PropertyLookupImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="PropertyDefinitionImpl.lookupValues"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.PropertyLookup"/>
>
>
>
>     <class name="PropertyLookupImpl" table="PROPERTY_LOOKUP"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.PropertyLookupImpl$OID">
>
>       <implements name="com.peacetech.dts.PropertyLookup"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="nameId" primary-key="true" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="code" primary-key="true" null-value="exception">
>
>         <column name="CODE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="16" scale="0"/>
>
>       </field>
>
>       <field name="description">
>
>         <column name="DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="120" scale="0"/>
>
>       </field>
>
>       <field name="shortDescription">
>
>         <column name="SHORT_DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="64" scale="0"/>
>
>       </field>
>
>       <field name="sortOrder" null-value="exception">
>
>         <column name="SORT_ORDER" jdbc-type="DECIMAL" sql-
> type="NUMBER"
> length="9" scale="0"/>
>
>       </field>
>
>       <field name="active" null-value="exception">
>
>         <column name="IS_ACTIVE" jdbc-type="DECIMAL" sql-type="NUMBER"
> length="1" scale="0"/>
>
>       </field>
>
>       <field name="definition"  null-value="exception">  <!-- N-1  
> (ref)
> -->
>
>         <column name="NAME" target="NAME" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="PropertyLookupImpl.definition"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.RelatedDocument"/>
>
>
>
>     <class name="RelatedDocumentImpl" table="RELATED_DOCUMENT"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.RelatedDocumentImpl$OID">
>
>       <implements name="com.peacetech.dts.RelatedDocument"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="sourceId" primary-key="true" null-
> value="exception">
>
>         <column name="SOURCE" jdbc-type="DECIMAL" sql-type="NUMBER"
> length="12" scale="0"/>
>
>       </field>
>
>       <field name="relationshipTypeId" primary-key="true"
> null-value="exception">
>
>         <column name="RELATIONSHIP_TYPE" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="9" scale="0"/>
>
>       </field>
>
>       <field name="targetId" primary-key="true" null-
> value="exception">
>
>         <column name="TARGET" jdbc-type="DECIMAL" sql-type="NUMBER"
> length="12" scale="0"/>
>
>       </field>
>
>       <field name="notes">
>
>         <column name="NOTES" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="120" scale="0"/>
>
>       </field>
>
>       <field name="source"  null-value="exception">  <!-- N-1 (ref)  
> -->
>
>         <column name="SOURCE" target="DOCUMENT_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="RelatedDocumentImpl.source"/>
>
>       </field>
>
>       <field name="target"  null-value="exception">  <!-- N-1 (ref)  
> -->
>
>         <column name="TARGET" target="DOCUMENT_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="RelatedDocumentImpl.target"/>
>
>       </field>
>
>       <field name="relationshipType"  null-value="exception">  <!--  
> N-1
> (ref) -->
>
>         <column name="RELATIONSHIP_TYPE"
> target="DOCUMENT_RELATIONSHIP_TYPE" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="9" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="RelatedDocumentImpl.relationshipType"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.TemplateNode"/>
>
>
>
>     <class name="TemplateNodeImpl" table="TEMPLATE_NODE"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.TemplateNodeImpl$OID">
>
>       <extension vendor-name="kodo" key="subclass-fetch-mode"
> value="none"/>
>
>       <implements name="com.peacetech.dts.TemplateNode"/>
>
>       <inheritance strategy="new-table">
>
>         <discriminator strategy="value-map" value="100"
> column="JDO_CLASS"/>
>
>       </inheritance>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="id" primary-key="true" null-value="exception">
>
>         <column name="TEMPLATE_NODE_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="name" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="64" scale="0"/>
>
>       </field>
>
>       <field name="createDate">
>
>         <column name="CREATE_DATE" jdbc-type="DATE" sql-type="DATE"
> length="7" scale="0"/>
>
>       </field>
>
>       <field name="updateDate">
>
>         <column name="UPDATE_DATE" jdbc-type="DATE" sql-type="DATE"
> length="7" scale="0"/>
>
>       </field>
>
>       <field name="updateUser">
>
>         <column name="UPDATE_USER" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>       </field>
>
>       <field name="parent" >  <!-- N-1 (ref) -->
>
>         <column name="PARENT" target="TEMPLATE_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateNodeImpl.parent"/>
>
>       </field>
>
>       <field name="subNodes" table="TEMPLATE_NODE" mapped-by="parent">
> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.TemplateNodeImpl"/>
>
>         <order column="PARENT_SORT_ORDER"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateNodeImpl.subNodes"/>
>
>       </field>
>
>       <field name="priorVersion" >  <!-- N-1 (ref) -->
>
>         <column name="PRIOR_VERSION" target="TEMPLATE_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateNodeImpl.priorVersion"/>
>
>       </field>
>
>       <field name="nextVersion" table="TEMPLATE_NODE"
> mapped-by="priorVersion"> <!-- 1-1 -->
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateNodeImpl.nextVersion"/>
>
>       </field>
>
>       <field name="properties" table="TEMPLATE_NODE_PROPERTY"
> mapped-by="templateNode"> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.TemplateNodePropertyImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateNodeImpl.properties"/>
>
>       </field>
>
>       <field name="ownerComponent"  null-value="exception">  <!-- N-1
> (ref) -->
>
>         <column name="OWNER_COMPONENT" target="TEMPLATE_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateNodeImpl.ownerComponent"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.TemplateNodeProperty"/>
>
>
>
>     <class name="TemplateNodePropertyImpl"
> table="TEMPLATE_NODE_PROPERTY" identity-type="application"
> objectid-class="com.peacetech.dts.jdo.TemplateNodePropertyImpl$OID">
>
>       <implements name="com.peacetech.dts.TemplateNodeProperty"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="templateNodeId" primary-key="true"
> null-value="exception">
>
>         <column name="TEMPLATE_NODE_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="nameId" primary-key="true" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="value" primary-key="true" null-value="exception">
>
>         <column name="VALUE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="definition"  null-value="exception">  <!-- N-1  
> (ref)
> -->
>
>         <column name="NAME" target="NAME" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateNodePropertyImpl.definition"/>
>
>       </field>
>
>       <field name="templateNode"  null-value="exception">  <!-- N-1
> (ref) -->
>
>         <column name="TEMPLATE_NODE_ID" target="TEMPLATE_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateNodePropertyImpl.templateNode"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.TemplateRule"/>
>
>
>
>     <class name="TemplateRuleImpl" table="TEMPLATE_RULE"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.TemplateRuleImpl$OID">
>
>       <implements name="com.peacetech.dts.TemplateRule"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="id" primary-key="true" null-value="exception">
>
>         <column name="RULE_ID" jdbc-type="DECIMAL" sql-type="NUMBER"
> length="12" scale="0"/>
>
>       </field>
>
>       <field name="type" null-value="exception">
>
>         <column name="TYPE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="name">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="description">
>
>         <column name="DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="80" scale="0"/>
>
>       </field>
>
>       <field name="text">
>
>         <column name="TEXT" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="1024" scale="0"/>
>
>       </field>
>
>       <field name="content"  null-value="exception">  <!-- N-1  
> (ref) -->
>
>         <column name="CONTENT_ID" target="CONTENT_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateRuleImpl.content"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.ComponentNode"/>
>
>
>
>     <class name="ComponentNodeImpl" identity-type="application"
> persistence-capable-
> superclass="com.peacetech.dts.jdo.TemplateNodeImpl">
>
>       <implements name="com.peacetech.dts.ComponentNode"/>
>
>       <inheritance strategy="superclass-table">
>
>         <discriminator value="130"/>
>
>       </inheritance>
>
>       <field name="referenceNumber">
>
>         <column name="REFERENCE_NUMBER" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="16" scale="0"/>
>
>       </field>
>
>       <field name="ownedContent" table="CONTENT" mapped-by="owner">  
> <!--
> 1-1 -->
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ComponentNodeImpl.ownedContent"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.Template"/>
>
>
>
>     <class name="TemplateImpl" identity-type="application"
> persistence-capable-superclass="com.peacetech.dts.jdo.ComponentImpl">
>
>       <implements name="com.peacetech.dts.Template"/>
>
>       <inheritance strategy="superclass-table">
>
>         <discriminator value="120"/>
>
>       </inheritance>
>
>       <field name="notes">
>
>         <column name="NOTES" jdbc-type="CLOB" sql-type="CLOB"
> length="-1" scale="0"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.ShareNode"/>
>
>
>
>     <class name="ShareNodeImpl" identity-type="application"
> persistence-capable-
> superclass="com.peacetech.dts.jdo.ComponentNodeImpl"
>>
>
>       <implements name="com.peacetech.dts.ShareNode"/>
>
>       <inheritance strategy="superclass-table">
>
>         <discriminator value="150"/>
>
>       </inheritance>
>
>       <field name="target"  null-value="exception">  <!-- N-1 (ref)  
> -->
>
>         <column name="SHARE_TARGET" target="TEMPLATE_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ShareNodeImpl.target"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.DocumentContent"/>
>
>
>
>     <class name="DocumentContentImpl" identity-type="application"
> persistence-capable-superclass="com.peacetech.dts.jdo.ContentImpl">
>
>       <implements name="com.peacetech.dts.DocumentContent"/>
>
>       <inheritance strategy="superclass-table">
>
>         <discriminator value="220"/>
>
>       </inheritance>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.DocumentFieldMultiValue"/>
>
>
>
>     <class name="DocumentFieldMultiValueImpl"
> identity-type="application"
> persistence-capable-
> superclass="com.peacetech.dts.jdo.DocumentFieldImpl"
>>
>
>       <implements name="com.peacetech.dts.DocumentFieldMultiValue"/>
>
>       <inheritance strategy="superclass-table">
>
>         <discriminator value="520"/>
>
>       </inheritance>
>
>       <field name="values" default-fetch-group="false"
> null-value="exception" persistence-modifier="persistent">
>
>         <extension vendor-name="kodo" key="externalizer"
> value="com.peacetech.dts.jdo.helpers.Externalizers.fromStringCollectio
> n"
> />
>
>         <extension vendor-name="kodo" key="factory"
> value="com.peacetech.dts.jdo.helpers.Externalizers.toStringCollection"
> />
>
>         <column name="VALUE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="1024" scale="0"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.ShareLink"/>
>
>
>
>     <class name="ShareLinkImpl" identity-type="application"
> persistence-capable-superclass="com.peacetech.dts.jdo.ShareNodeImpl">
>
>       <implements name="com.peacetech.dts.ShareLink"/>
>
>       <inheritance strategy="superclass-table">
>
>         <discriminator value="160"/>
>
>       </inheritance>
>
>       <field name="topicExcluded" null-value="exception">
>
>         <column name="IS_TOPIC_EXCLUDED" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="1" scale="0"/>
>
>       </field>
>
>       <field name="contentOverride" >  <!-- N-1 (ref) -->
>
>         <column name="CONTENT_ID" target="CONTENT_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ShareLinkImpl.contentOverride"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.DocumentSharePoint"/>
>
>
>
>     <class name="DocumentSharePointImpl" identity-type="application"
> persistence-capable-
> superclass="com.peacetech.dts.jdo.DocumentItemImpl">
>
>       <implements name="com.peacetech.dts.DocumentSharePoint"/>
>
>       <inheritance strategy="superclass-table">
>
>         <discriminator value="420"/>
>
>       </inheritance>
>
>     </class>
>
>
>
>     <interfac
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

RE: Why would Kodo refuse to batch inserts in certain tables? Big performance drop migrating to Kodo 4.1

Roytman, Alex
In reply to this post by Roytman, Alex
Marc,

Kodo 3.4 does it just fine. We are using latest 10.2.0.2 driver (and
prior versions before 10g including 9.2.0.5 and above) and it works fine
with batching.

What's the problem anyway? May be it has long been resolved in one of
the oracle patch releases? We came to rely on batching so much so that
the loss of it affects performance dramatically (we have many small
objects).
Can it be turned on and off?
I will be happy to test it for you if you can tell me what to look for.

Thank you

Alex



-----Original Message-----
From: Marc Prud'hommeaux [mailto:[hidden email]] On Behalf Of
Marc Prud'hommeaux
Sent: Tuesday, October 17, 2006 4:57 PM
To: [hidden email]
Subject: Re: Why would Kodo refuse to batch inserts in certain tables?
Big performance drop migrating to Kodo 4.1

Alex-

Since the non-batched statement contains a Date field, this is due to  
the workaround for the Oracle JDBC driver bug I mentioned before.

Kodo will not batch statements that contains a Date field when  
interacting with Oracle.



On Oct 17, 2006, at 1:38 PM, Roytman, Alex wrote:

> Yes it will be wrapped by email though
>
>
>
> 15  WARN   [main] openjpa.Runtime - The property named
> "kodo.jdbc.SequenceFactory" was not recognized and will be ignored,
> although the name closely matches a valid property called
> "kodo.jdbc.SchemaFactory".
>
> 15  WARN   [main] openjpa.Runtime - The property named
> "kodo.jdbc.ClassIndicator" was not recognized and will be ignored,
> although the name closely matches a valid property called
> "kodo.jdbc.MappingFactory".
>
> 47  INFO   [main] openjpa.Runtime - Starting BEA Kodo 4.1.0 with
> patches:
>
>     Kodo JDO Utilities vtip-revision
>
> 62  INFO   [main] openjpa.jdbc.JDBC - Using dictionary class
> "org.apache.openjpa.jdbc.sql.OracleDictionary".
>
> 328  INFO   [main] openjpa.jdbc.JDBC - oracle-batch-override
>
> 1578  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 21057622 SELECT t0.JDO_LOCK, t0.IS_ACTIVE,
> t0.DEFAULT_VALUE, t0.DESCRIPTION, t0.IS_LOOKUP, t0.LOOKUP_SORT_ORDER,
> t0.IS_MULTI_VALUE FROM DTS.PROPERTY_DEFINITION t0 WHERE t0.NAME = ?
> [params=(String) IC]
>
> 1578  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1593  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 21057622 SELECT t0.JDO_LOCK, t0.IS_ACTIVE,
> t0.DEFAULT_VALUE, t0.DESCRIPTION, t0.IS_LOOKUP, t0.LOOKUP_SORT_ORDER,
> t0.IS_MULTI_VALUE FROM DTS.PROPERTY_DEFINITION t0 WHERE t0.NAME = ?
> [params=(String) DocType]
>
> 1593  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1593  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 21057622 SELECT t0.JDO_LOCK, t0.IS_ACTIVE,
> t0.DEFAULT_VALUE, t0.DESCRIPTION, t0.IS_LOOKUP, t0.LOOKUP_SORT_ORDER,
> t0.IS_MULTI_VALUE FROM DTS.PROPERTY_DEFINITION t0 WHERE t0.NAME = ?
> [params=(String) GC]
>
> 1593  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1593  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 21057622 SELECT t0.JDO_LOCK, t0.IS_ACTIVE,
> t0.DEFAULT_VALUE, t0.DESCRIPTION, t0.IS_LOOKUP, t0.LOOKUP_SORT_ORDER,
> t0.IS_MULTI_VALUE FROM DTS.PROPERTY_DEFINITION t0 WHERE t0.NAME = ?
> [params=(String) ClauseId]
>
> 1593  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 15513215 INSERT INTO DTS.DOCUMENT  
> (DOCUMENT_NODE_ID,
> DOCUMENT_NUMBER, TEMPLATE_ID, ORG_UNIT_ID, PREPARER, TITLE,
> IS_PUBLISHED, PUBLISH_DATE) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
> [params=(long) 529800, (String) {529800}, (long) 9432, (long) 1,  
> (long)
> 1, (null) null, (int) 0, (null) null]
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 12675864 INSERT INTO DTS.DOCUMENT_FIELD
> (DOCUMENT_NODE_ID, NAME, CONTENT_ID, VALUE, JDO_CLASS, JDO_LOCK)  
> VALUES
> (?, ?, ?, ?, ?, ?) [params=(long) 529802, (String) preferences, (long)
> 2117, (null) null, (int) 520, (int) 1]
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 12675864 INSERT INTO DTS.DOCUMENT_FIELD
> (DOCUMENT_NODE_ID, NAME, CONTENT_ID, VALUE, JDO_CLASS, JDO_LOCK)  
> VALUES
> (?, ?, ?, ?, ?, ?) [params=(long) 529801, (String) preferences, (long)
> 2116, (null) null, (int) 520, (int) 1]
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 12675864 INSERT INTO DTS.DOCUMENT_FIELD
> (DOCUMENT_NODE_ID, NAME, CONTENT_ID, VALUE, JDO_CLASS, JDO_LOCK)  
> VALUES
> (?, ?, ?, ?, ?, ?) [params=(long) 529802, (String) address, (long)  
> 2117,
> (null) null, (int) 510, (int) 1]
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 12675864 INSERT INTO DTS.DOCUMENT_FIELD
> (DOCUMENT_NODE_ID, NAME, CONTENT_ID, VALUE, JDO_CLASS, JDO_LOCK)  
> VALUES
> (?, ?, ?, ?, ?, ?) [params=(long) 529801, (String) address, (long)  
> 2116,
> (null) null, (int) 510, (int) 1]
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1625  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 12675864 INSERT INTO DTS.DOCUMENT_FIELD
> (DOCUMENT_NODE_ID, NAME, CONTENT_ID, VALUE, JDO_CLASS, JDO_LOCK)  
> VALUES
> (?, ?, ?, ?, ?, ?) [params=(long) 529801, (String) address, (long)  
> 2116,
> (null) null, (int) 510, (int) 1]
>
> 1640  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [15
> ms] spent
>
> 1640  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 6169134 INSERT INTO DTS.DOCUMENT_NODE
> (DOCUMENT_NODE_ID, OWNER_DOCUMENT, LOCAL_ROOT, PARENT, NAME,
> CREATE_DATE, UPDATE_DATE, UPDATE_USER, JDO_CLASS, JDO_LOCK) VALUES (?,
> ?, ?, ?, ?, ?, ?, ?, ?, ?) [params=(long) 529800, (long) 529800,  
> (long)
> 529800, (null) null, (String) d529800, (Date) 2006-10-16, (Date)
> 2006-10-16, (String) dts.test, (int) 440, (int) 1]
>
> 1640  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1640  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 1440568 INSERT INTO DTS.DOCUMENT_NODE
> (DOCUMENT_NODE_ID, OWNER_DOCUMENT, LOCAL_ROOT, PARENT,
> PARENT_SORT_ORDER, NAME, CONTENT_ID, ORIGINAL_CONTENT,  
> REFERENCE_NUMBER,
> IS_GROUP, IS_SELECTED_BY_USER, IS_SELECTED_BY_RULE, CREATE_DATE,
> UPDATE_DATE, UPDATE_USER, JDO_CLASS, JDO_LOCK) VALUES  
> (?, ?, ?, ?, ?, ?,
> ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [params=(long) 529801, (long) 529800,
> (long) 529800, (long) 529800, (int) 0, (String) t1, (long) 2116,  
> (null)
> null, (null) null, (int) 0, (null) null, (int) 0, (Date) 2006-10-16,
> (Date) 2006-10-16, (String) dts.test, (int) 430, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [16
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 1440568 INSERT INTO DTS.DOCUMENT_NODE
> (DOCUMENT_NODE_ID, OWNER_DOCUMENT, LOCAL_ROOT, PARENT,
> PARENT_SORT_ORDER, NAME, CONTENT_ID, ORIGINAL_CONTENT,  
> REFERENCE_NUMBER,
> IS_GROUP, IS_SELECTED_BY_USER, IS_SELECTED_BY_RULE, CREATE_DATE,
> UPDATE_DATE, UPDATE_USER, JDO_CLASS, JDO_LOCK) VALUES  
> (?, ?, ?, ?, ?, ?,
> ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [params=(long) 529802, (long) 529800,
> (long) 529800, (long) 529801, (int) 0, (String) t1.1, (long) 2117,
> (null) null, (null) null, (int) 0, (null) null, (int) 0, (Date)
> 2006-10-16, (Date) 2006-10-16, (String) dts.test, (int) 430, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529802, (String) IC, (String) IC1, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529801, (String) ClauseId, (String) CRS, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529802, (String) GC, (String) CRS, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529800, (String) DocType, (String) RFP, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529802, (String) GC, (String) EDUC, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529801, (String) GC, (String) CRS, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529802, (String) ClauseId, (String) CRS, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529800, (String) IC, (String) NHLBI, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529802, (String) IC, (String) IC2, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529801, (String) GC, (String) EDUC, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529800, (String) IC, (String) NCI, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529801, (String) IC, (String) IC1, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> batching prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529801, (String) IC, (String) IC2, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164>
> executing prepstmnt 18895884 INSERT INTO DTS.DOCUMENT_NODE_PROPERTY
> (DOCUMENT_NODE_ID, NAME, VALUE, JDO_LOCK) VALUES (?, ?, ?, ?)
> [params=(long) 529801, (String) IC, (String) IC2, (int) 1]
>
> 1656  TRACE  [main] openjpa.jdbc.SQL - <t 28035001, conn 15038164> [0
> ms] spent
>
>
>
>
>
>
>
>
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <!DOCTYPE jdo PUBLIC "-//Sun Microsystems, Inc.//DTD Java Data Objects
> Metadata 2.0//EN" "http://java.sun.com/dtd/jdo_2_0.dtd">
>
> <jdo>
>
>   <package name="com.peacetech.dts.jdo">
>
>
>
>     <interface name="com.peacetech.dts.ApplicationProperty"/>
>
>
>
>     <class name="ApplicationPropertyImpl" table="APPLICATION_PROPERTY"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.ApplicationPropertyImpl$OID">
>
>       <implements name="com.peacetech.dts.ApplicationProperty"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="name" primary-key="true" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="value">
>
>         <column name="VALUE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="250" scale="0"/>
>
>       </field>
>
>       <field name="modifiable" null-value="exception">
>
>         <column name="MODIFIABLE" jdbc-type="DECIMAL" sql-
> type="NUMBER"
> length="1" scale="0"/>
>
>       </field>
>
>       <field name="runtimeModifiable" null-value="exception">
>
>         <column name="RUNTIME_MODIFIABLE" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="1" scale="0"/>
>
>       </field>
>
>       <field name="description">
>
>         <column name="DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="256" scale="0"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.Attribute"/>
>
>
>
>     <class name="AttributeImpl" table="ATTRIBUTE"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.AttributeImpl$OID">
>
>       <implements name="com.peacetech.dts.Attribute"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="id" primary-key="true" null-value="exception">
>
>         <column name="ATTRIBUTE_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="name" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="description">
>
>         <column name="DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="200" scale="0"/>
>
>       </field>
>
>       <field name="active" null-value="exception">
>
>         <column name="IS_ACTIVE" jdbc-type="DECIMAL" sql-type="NUMBER"
> length="1" scale="0"/>
>
>       </field>
>
>       <field name="shared" null-value="exception">
>
>         <column name="IS_SHARED" jdbc-type="DECIMAL" sql-type="NUMBER"
> length="1" scale="0"/>
>
>       </field>
>
>       <field name="lookup" null-value="exception">
>
>         <column name="IS_LOOKUP" jdbc-type="DECIMAL" sql-type="NUMBER"
> length="1" scale="0"/>
>
>       </field>
>
>       <field name="lookupSortOrder" null-value="exception"
> persistence-modifier="persistent" default-fetch-group="true">
>
>         <extension vendor-name="kodo" key="externalizer"
> value="toSqlValue"/>
>
>         <extension vendor-name="kodo" key="factory"
> value="fromSqlValue"/>
>
>         <column name="LOOKUP_SORT_ORDER" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="9" scale="0"/>
>
>       </field>
>
>       <field name="multiValue" null-value="exception">
>
>         <column name="IS_MULTI_VALUE" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="1" scale="0"/>
>
>       </field>
>
>       <field name="required" null-value="exception">
>
>         <column name="IS_REQUIRED" jdbc-type="DECIMAL" sql-
> type="NUMBER"
> length="1" scale="0"/>
>
>       </field>
>
>       <field name="defaultValue">
>
>         <column name="DEFAULT_VALUE" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="100" scale="0"/>
>
>       </field>
>
>       <field name="lookupValues" table="ATTRIBUTE_LOOKUP"
> mapped-by="attribute"> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.AttributeLookupImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="AttributeImpl.lookupValues"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.AttributeLookup"/>
>
>
>
>     <class name="AttributeLookupImpl" table="ATTRIBUTE_LOOKUP"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.AttributeLookupImpl$OID">
>
>       <implements name="com.peacetech.dts.AttributeLookup"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="attributeId" primary-key="true"
> null-value="exception">
>
>         <column name="ATTRIBUTE_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="code" primary-key="true" null-value="exception">
>
>         <column name="CODE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="16" scale="0"/>
>
>       </field>
>
>       <field name="description">
>
>         <column name="DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="120" scale="0"/>
>
>       </field>
>
>       <field name="shortDescription">
>
>         <column name="SHORT_DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="64" scale="0"/>
>
>       </field>
>
>       <field name="sortOrder" null-value="exception">
>
>         <column name="SORT_ORDER" jdbc-type="DECIMAL" sql-
> type="NUMBER"
> length="9" scale="0"/>
>
>       </field>
>
>       <field name="attribute"  null-value="exception">  <!-- N-1 (ref)
> -->
>
>         <column name="ATTRIBUTE_ID" target="ATTRIBUTE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="AttributeLookupImpl.attribute"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.Component"/>
>
>
>
>     <class name="ComponentImpl" table="COMPONENT"
> identity-type="application"
> persistence-capable-
> superclass="com.peacetech.dts.jdo.TemplateNodeImpl">
>
>       <implements name="com.peacetech.dts.Component"/>
>
>
>
>       <inheritance strategy="new-table">
>
>         <join>
>
>           <column name="TEMPLATE_NODE_ID" target="TEMPLATE_NODE_ID"/>
>
>         </join>
>
>         <discriminator value="110"/>
>
>       </inheritance>
>
>       <field name="released" null-value="exception">
>
>         <column name="IS_RELEASED" jdbc-type="DECIMAL" sql-
> type="NUMBER"
> length="1" scale="0"/>
>
>       </field>
>
>       <field name="effectiveDate">
>
>         <column name="EFFECTIVE_DATE" jdbc-type="DATE" sql-type="DATE"
> length="7" scale="0"/>
>
>       </field>
>
>       <field name="description">
>
>         <column name="DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="200" scale="0"/>
>
>       </field>
>
>       <field name="preparer"  null-value="exception">  <!-- N-1 (ref)
> -->
>
>         <column name="PREPARER" target="EMPLOYEE_ID" jdbc-
> type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ComponentImpl.preparer"/>
>
>       </field>
>
>       <field name="orgUnit"  null-value="exception">  <!-- N-1  
> (ref) -->
>
>         <column name="ORG_UNIT_ID" target="ORG_UNIT_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ComponentImpl.orgUnit"/>
>
>       </field>
>
>       <field name="container"  null-value="exception">  <!-- N-1 (ref)
> -->
>
>         <column name="CONTAINER_ID" target="CONTAINER_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ComponentImpl.container"/>
>
>       </field>
>
>        <field name="attributes" table="COMPONENT_ATTRIBUTE"> <!-- M-N
> -->
>
>         <collection element-
> type="com.peacetech.dts.jdo.AttributeImpl"/>
>
>         <join>
>
>           <column name="TEMPLATE_NODE_ID" target="TEMPLATE_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         </join>
>
>         <element>
>
>           <column name="ATTRIBUTE_ID" target="ATTRIBUTE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         </element>
>
>         <order column="SORT_ORDER"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ComponentImpl.attributes"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.Container"/>
>
>
>
>     <class name="ContainerImpl" table="CONTAINER"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.ContainerImpl$OID">
>
>       <implements name="com.peacetech.dts.Container"/>
>
>       <inheritance strategy="new-table">
>
>         <discriminator strategy="value-map" value="300"
> column="JDO_CLASS"/>
>
>       </inheritance>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="id" primary-key="true" null-value="exception">
>
>         <column name="CONTAINER_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="name" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="48" scale="0"/>
>
>       </field>
>
>       <field name="description">
>
>         <column name="DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="400" scale="0"/>
>
>       </field>
>
>       <field name="parent" >  <!-- N-1 (ref) -->
>
>         <column name="PARENT" target="CONTAINER_ID" jdbc-
> type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ContainerImpl.parent"/>
>
>       </field>
>
>       <field name="subNodes" table="CONTAINER" mapped-by="parent">  
> <!--
> 1-N -->
>
>         <collection element-
> type="com.peacetech.dts.jdo.ContainerImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ContainerImpl.subNodes"/>
>
>       </field>
>
>       <field name="properties" table="CONTAINER_PROPERTY"
> mapped-by="container"> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.ContainerPropertyImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ContainerImpl.properties"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.ContainerProperty"/>
>
>
>
>     <class name="ContainerPropertyImpl" table="CONTAINER_PROPERTY"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.ContainerPropertyImpl$OID">
>
>       <implements name="com.peacetech.dts.ContainerProperty"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="containerId" primary-key="true"
> null-value="exception">
>
>         <column name="CONTAINER_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="nameId" primary-key="true" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="value" primary-key="true" null-value="exception">
>
>         <column name="VALUE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="container"  null-value="exception">  <!-- N-1 (ref)
> -->
>
>         <column name="CONTAINER_ID" target="CONTAINER_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ContainerPropertyImpl.container"/>
>
>       </field>
>
>       <field name="definition"  null-value="exception">  <!-- N-1  
> (ref)
> -->
>
>         <column name="NAME" target="NAME" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ContainerPropertyImpl.definition"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.Content"/>
>
>
>
>     <class name="ContentImpl" table="CONTENT"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.ContentImpl$OID">
>
>       <implements name="com.peacetech.dts.Content"/>
>
>       <inheritance strategy="new-table">
>
>         <discriminator strategy="value-map" value="200"
> column="JDO_CLASS"/>
>
>       </inheritance>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="id" primary-key="true" null-value="exception">
>
>         <column name="CONTENT_ID" jdbc-type="DECIMAL" sql-
> type="NUMBER"
> length="12" scale="0"/>
>
>       </field>
>
>       <field name="tocTitle">
>
>         <column name="TOC_TITLE" jdbc-type="VARCHAR" sql-
> type="VARCHAR2"
> length="500" scale="0"/>
>
>       </field>
>
>       <field name="shortTitle">
>
>         <column name="SHORT_TITLE" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="80" scale="0"/>
>
>       </field>
>
>       <field name="longTitle">
>
>         <column name="LONG_TITLE" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="200" scale="0"/>
>
>       </field>
>
>       <field name="text">
>
>         <column name="TEXT" jdbc-type="CLOB" sql-type="CLOB"  
> length="-1"
> scale="0"/>
>
>       </field>
>
>       <field name="instructions">
>
>         <column name="INSTRUCTIONS" jdbc-type="CLOB" sql-type="CLOB"
> length="-1" scale="0"/>
>
>       </field>
>
>       <field name="fields" table="CONTENT_FIELD" mapped-by="content">
> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.ContentFieldImpl"/>
>
>         <order column="SORT_ORDER"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ContentImpl.fields"/>
>
>       </field>
>
>       <field name="rules" table="TEMPLATE_RULE" mapped-by="content">
> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.TemplateRuleImpl"/>
>
>         <order column="CONTENT_SORT_ORDER"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ContentImpl.rules"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.ContentField"/>
>
>
>
>     <class name="ContentFieldImpl" table="CONTENT_FIELD"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.ContentFieldImpl$OID">
>
>       <implements name="com.peacetech.dts.ContentField"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="contentId" primary-key="true" null-
> value="exception">
>
>         <column name="CONTENT_ID" jdbc-type="DECIMAL" sql-
> type="NUMBER"
> length="12" scale="0"/>
>
>       </field>
>
>       <field name="name" primary-key="true" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="40" scale="0"/>
>
>       </field>
>
>       <field name="dataType">
>
>         <column name="DATA_TYPE" jdbc-type="VARCHAR" sql-
> type="VARCHAR2"
> length="20" scale="0"/>
>
>       </field>
>
>       <field name="format">
>
>         <column name="FORMAT" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="30" scale="0"/>
>
>       </field>
>
>       <field name="required">
>
>         <column name="REQUIRED" jdbc-type="VARCHAR" sql-
> type="VARCHAR2"
> length="80" scale="0"/>
>
>       </field>
>
>       <field name="label">
>
>         <column name="LABEL" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="60" scale="0"/>
>
>       </field>
>
>       <field name="attributes" null-value="exception"
> persistence-modifier="persistent" default-fetch-group="true">
>
>         <extension vendor-name="kodo" key="externalizer"
> value="com.peacetech.dts.jdo.helpers.Externalizers.fromStringMap"/>
>
>         <extension vendor-name="kodo" key="factory"
> value="com.peacetech.dts.jdo.helpers.Externalizers.toStringMap"/>
>
>         <column name="ATTRIBUTES" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="512" scale="0"/>
>
>       </field>
>
>       <field name="multiValue" null-value="exception">
>
>         <column name="IS_MULTI_VALUE" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="1" scale="0"/>
>
>       </field>
>
>       <field name="inputValues" null-value="exception"
> persistence-modifier="persistent" default-fetch-group="true">
>
>         <extension vendor-name="kodo" key="externalizer"
> value="com.peacetech.dts.jdo.helpers.Externalizers.fromStringMap"/>
>
>         <extension vendor-name="kodo" key="factory"
> value="com.peacetech.dts.jdo.helpers.Externalizers.toStringMap"/>
>
>         <column name="INPUT_VALUES" jdbc-type="CLOB" sql-type="CLOB"
> length="-1" scale="0"/>
>
>       </field>
>
>       <field name="content"  null-value="exception">  <!-- N-1  
> (ref) -->
>
>         <column name="CONTENT_ID" target="CONTENT_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ContentFieldImpl.content"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.Document"/>
>
>
>
>     <class name="DocumentImpl" table="DOCUMENT"
> identity-type="application"
> persistence-capable-
> superclass="com.peacetech.dts.jdo.DocumentNodeImpl">
>
>       <implements name="com.peacetech.dts.Document"/>
>
>
>
>       <inheritance strategy="new-table">
>
>         <join>
>
>           <column name="DOCUMENT_NODE_ID" target="DOCUMENT_NODE_ID"/>
>
>         </join>
>
>         <discriminator value="440"/>
>
>       </inheritance>
>
>       <field name="documentNumber" null-value="exception">
>
>         <column name="DOCUMENT_NUMBER" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>       </field>
>
>       <field name="title">
>
>         <column name="TITLE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="200" scale="0"/>
>
>       </field>
>
>       <field name="published" null-value="exception">
>
>         <column name="IS_PUBLISHED" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="1" scale="0"/>
>
>       </field>
>
>       <field name="publishDate">
>
>         <column name="PUBLISH_DATE" jdbc-type="DATE" sql-type="DATE"
> length="7" scale="0"/>
>
>       </field>
>
>       <field name="preparer"  null-value="exception">  <!-- N-1 (ref)
> -->
>
>         <column name="PREPARER" target="EMPLOYEE_ID" jdbc-
> type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentImpl.preparer"/>
>
>       </field>
>
>       <field name="orgUnit"  null-value="exception">  <!-- N-1  
> (ref) -->
>
>         <column name="ORG_UNIT_ID" target="ORG_UNIT_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentImpl.orgUnit"/>
>
>       </field>
>
>       <field name="attributes" table="DOCUMENT_ATTRIBUTE"
> mapped-by="document"> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.DocumentAttributeImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentImpl.attributes"/>
>
>       </field>
>
>       <field name="relatedDocuments" table="RELATED_DOCUMENT"
> mapped-by="source"> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.RelatedDocumentImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentImpl.relatedDocuments"/>
>
>       </field>
>
>       <field name="relatedToDocuments" table="RELATED_DOCUMENT"
> mapped-by="target"> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.RelatedDocumentImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentImpl.relatedToDocuments"/>
>
>       </field>
>
>       <field name="template"  null-value="exception">  <!-- N-1 (ref)
> -->
>
>         <column name="TEMPLATE_ID" target="TEMPLATE_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentImpl.template"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.DocumentAttribute"/>
>
>
>
>     <class name="DocumentAttributeImpl" table="DOCUMENT_ATTRIBUTE"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.DocumentAttributeImpl$OID">
>
>       <implements name="com.peacetech.dts.DocumentAttribute"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="documentNodeId" primary-key="true"
> null-value="exception">
>
>         <column name="DOCUMENT_NODE_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="attributeId" primary-key="true"
> null-value="exception">
>
>         <column name="ATTRIBUTE_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="value">
>
>         <column name="VALUE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="100" scale="0"/>
>
>       </field>
>
>       <field name="attribute"  null-value="exception">  <!-- N-1 (ref)
> -->
>
>         <column name="ATTRIBUTE_ID" target="ATTRIBUTE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentAttributeImpl.attribute"/>
>
>       </field>
>
>       <field name="document"  null-value="exception">  <!-- N-1 (ref)
> -->
>
>         <column name="DOCUMENT_NODE_ID" target="DOCUMENT_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentAttributeImpl.document"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.DocumentField"/>
>
>
>
>     <class name="DocumentFieldImpl" table="DOCUMENT_FIELD"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.DocumentFieldImpl$OID">
>
>       <implements name="com.peacetech.dts.DocumentField"/>
>
>       <inheritance strategy="new-table">
>
>         <discriminator strategy="value-map" value="500"
> column="JDO_CLASS"/>
>
>       </inheritance>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="documentNodeId" primary-key="true"
> null-value="exception">
>
>         <column name="DOCUMENT_NODE_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="nameId" primary-key="true" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="40" scale="0"/>
>
>       </field>
>
>       <field name="definition"  null-value="exception">  <!-- N-1  
> (ref)
> -->
>
>         <column name="CONTENT_ID" target="CONTENT_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <column name="NAME" target="NAME" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="40" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentFieldImpl.definition"/>
>
>       </field>
>
>       <field name="topic"  null-value="exception">  <!-- N-1 (ref) -->
>
>         <column name="DOCUMENT_NODE_ID" target="DOCUMENT_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentFieldImpl.topic"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.DocumentNode"/>
>
>
>
>     <class name="DocumentNodeImpl" table="DOCUMENT_NODE"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.DocumentNodeImpl$OID">
>
>       <implements name="com.peacetech.dts.DocumentNode"/>
>
>       <inheritance strategy="new-table">
>
>         <discriminator strategy="value-map" value="400"
> column="JDO_CLASS"/>
>
>       </inheritance>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="id" primary-key="true" null-value="exception">
>
>         <column name="DOCUMENT_NODE_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="name" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="64" scale="0"/>
>
>       </field>
>
>       <field name="createDate">
>
>         <column name="CREATE_DATE" jdbc-type="DATE" sql-type="DATE"
> length="7" scale="0"/>
>
>       </field>
>
>       <field name="updateDate">
>
>         <column name="UPDATE_DATE" jdbc-type="DATE" sql-type="DATE"
> length="7" scale="0"/>
>
>       </field>
>
>       <field name="updateUser">
>
>         <column name="UPDATE_USER" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>       </field>
>
>       <field name="localRoot"  null-value="exception">  <!-- N-1 (ref)
> -->
>
>         <column name="LOCAL_ROOT" target="DOCUMENT_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentNodeImpl.localRoot"/>
>
>       </field>
>
>       <field name="parent" >  <!-- N-1 (ref) -->
>
>         <column name="PARENT" target="DOCUMENT_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentNodeImpl.parent"/>
>
>       </field>
>
>       <field name="subNodes" table="DOCUMENT_NODE" mapped-by="parent">
> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.DocumentNodeImpl"/>
>
>         <order column="PARENT_SORT_ORDER"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentNodeImpl.subNodes"/>
>
>       </field>
>
>       <field name="properties" table="DOCUMENT_NODE_PROPERTY"
> mapped-by="documentNode"> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.DocumentNodePropertyImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentNodeImpl.properties"/>
>
>       </field>
>
>       <field name="ownerDocument"  null-value="exception">  <!-- N-1
> (ref) -->
>
>         <column name="OWNER_DOCUMENT" target="DOCUMENT_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentNodeImpl.ownerDocument"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.DocumentNodeProperty"/>
>
>
>
>     <class name="DocumentNodePropertyImpl"
> table="DOCUMENT_NODE_PROPERTY" identity-type="application"
> objectid-class="com.peacetech.dts.jdo.DocumentNodePropertyImpl$OID">
>
>       <implements name="com.peacetech.dts.DocumentNodeProperty"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="documentNodeId" primary-key="true"
> null-value="exception">
>
>         <column name="DOCUMENT_NODE_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="nameId" primary-key="true" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="value" primary-key="true" null-value="exception">
>
>         <column name="VALUE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="documentNode"  null-value="exception">  <!-- N-1
> (ref) -->
>
>         <column name="DOCUMENT_NODE_ID" target="DOCUMENT_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentNodePropertyImpl.documentNode"/>
>
>       </field>
>
>       <field name="definition"  null-value="exception">  <!-- N-1  
> (ref)
> -->
>
>         <column name="NAME" target="NAME" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="DocumentNodePropertyImpl.definition"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.DocumentRelationshipType"/>
>
>
>
>     <class name="DocumentRelationshipTypeImpl"
> table="DOCUMENT_RELATIONSHIP_TYPE" identity-type="application"
> objectid-class="com.peacetech.dts.jdo.DocumentRelationshipTypeImpl
> $OID">
>
>       <implements name="com.peacetech.dts.DocumentRelationshipType"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="id" primary-key="true" null-value="exception">
>
>         <column name="DOCUMENT_RELATIONSHIP_TYPE" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="9" scale="0"/>
>
>       </field>
>
>       <field name="description">
>
>         <column name="DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="120" scale="0"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.Employee"/>
>
>
>
>     <class name="EmployeeImpl" table="EMPLOYEE"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.EmployeeImpl$OID">
>
>       <implements name="com.peacetech.dts.Employee"/>
>
>       <inheritance strategy="new-table">
>
>         <discriminator strategy="value-map" value="610"
> column="JDO_CLASS"/>
>
>       </inheritance>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="id" primary-key="true" null-value="exception">
>
>         <column name="EMPLOYEE_ID" jdbc-type="DECIMAL" sql-
> type="NUMBER"
> length="12" scale="0"/>
>
>       </field>
>
>       <field name="firstName">
>
>         <column name="FIRST_NAME" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>       </field>
>
>       <field name="lastName">
>
>         <column name="LAST_NAME" jdbc-type="VARCHAR" sql-
> type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="middleName">
>
>         <column name="MIDDLE_NAME" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.OrgUnit"/>
>
>
>
>     <class name="OrgUnitImpl" table="ORG_UNIT"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.OrgUnitImpl$OID">
>
>       <implements name="com.peacetech.dts.OrgUnit"/>
>
>       <inheritance strategy="new-table">
>
>         <discriminator strategy="value-map" value="600"
> column="JDO_CLASS"/>
>
>       </inheritance>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="id" primary-key="true" null-value="exception">
>
>         <column name="ORG_UNIT_ID" jdbc-type="DECIMAL" sql-
> type="NUMBER"
> length="12" scale="0"/>
>
>       </field>
>
>       <field name="name">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="128" scale="0"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.PropertyDefinition"/>
>
>
>
>     <class name="PropertyDefinitionImpl" table="PROPERTY_DEFINITION"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.PropertyDefinitionImpl$OID">
>
>       <implements name="com.peacetech.dts.PropertyDefinition"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="name" primary-key="true" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="description">
>
>         <column name="DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="200" scale="0"/>
>
>       </field>
>
>       <field name="active" null-value="exception">
>
>         <column name="IS_ACTIVE" jdbc-type="DECIMAL" sql-type="NUMBER"
> length="1" scale="0"/>
>
>       </field>
>
>       <field name="lookup" null-value="exception">
>
>         <column name="IS_LOOKUP" jdbc-type="DECIMAL" sql-type="NUMBER"
> length="1" scale="0"/>
>
>       </field>
>
>       <field name="lookupSortOrder" null-value="exception"
> persistence-modifier="persistent" default-fetch-group="true">
>
>         <extension vendor-name="kodo" key="externalizer"
> value="toSqlValue"/>
>
>         <extension vendor-name="kodo" key="factory"
> value="fromSqlValue"/>
>
>         <column name="LOOKUP_SORT_ORDER" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="9" scale="0"/>
>
>       </field>
>
>       <field name="multiValue" null-value="exception">
>
>         <column name="IS_MULTI_VALUE" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="1" scale="0"/>
>
>       </field>
>
>       <field name="defaultValue">
>
>         <column name="DEFAULT_VALUE" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>       </field>
>
>       <field name="lookupValues" table="PROPERTY_LOOKUP"
> mapped-by="definition"> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.PropertyLookupImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="PropertyDefinitionImpl.lookupValues"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.PropertyLookup"/>
>
>
>
>     <class name="PropertyLookupImpl" table="PROPERTY_LOOKUP"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.PropertyLookupImpl$OID">
>
>       <implements name="com.peacetech.dts.PropertyLookup"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="nameId" primary-key="true" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="code" primary-key="true" null-value="exception">
>
>         <column name="CODE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="16" scale="0"/>
>
>       </field>
>
>       <field name="description">
>
>         <column name="DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="120" scale="0"/>
>
>       </field>
>
>       <field name="shortDescription">
>
>         <column name="SHORT_DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="64" scale="0"/>
>
>       </field>
>
>       <field name="sortOrder" null-value="exception">
>
>         <column name="SORT_ORDER" jdbc-type="DECIMAL" sql-
> type="NUMBER"
> length="9" scale="0"/>
>
>       </field>
>
>       <field name="active" null-value="exception">
>
>         <column name="IS_ACTIVE" jdbc-type="DECIMAL" sql-type="NUMBER"
> length="1" scale="0"/>
>
>       </field>
>
>       <field name="definition"  null-value="exception">  <!-- N-1  
> (ref)
> -->
>
>         <column name="NAME" target="NAME" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="PropertyLookupImpl.definition"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.RelatedDocument"/>
>
>
>
>     <class name="RelatedDocumentImpl" table="RELATED_DOCUMENT"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.RelatedDocumentImpl$OID">
>
>       <implements name="com.peacetech.dts.RelatedDocument"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="sourceId" primary-key="true" null-
> value="exception">
>
>         <column name="SOURCE" jdbc-type="DECIMAL" sql-type="NUMBER"
> length="12" scale="0"/>
>
>       </field>
>
>       <field name="relationshipTypeId" primary-key="true"
> null-value="exception">
>
>         <column name="RELATIONSHIP_TYPE" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="9" scale="0"/>
>
>       </field>
>
>       <field name="targetId" primary-key="true" null-
> value="exception">
>
>         <column name="TARGET" jdbc-type="DECIMAL" sql-type="NUMBER"
> length="12" scale="0"/>
>
>       </field>
>
>       <field name="notes">
>
>         <column name="NOTES" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="120" scale="0"/>
>
>       </field>
>
>       <field name="source"  null-value="exception">  <!-- N-1 (ref)  
> -->
>
>         <column name="SOURCE" target="DOCUMENT_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="RelatedDocumentImpl.source"/>
>
>       </field>
>
>       <field name="target"  null-value="exception">  <!-- N-1 (ref)  
> -->
>
>         <column name="TARGET" target="DOCUMENT_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="RelatedDocumentImpl.target"/>
>
>       </field>
>
>       <field name="relationshipType"  null-value="exception">  <!--  
> N-1
> (ref) -->
>
>         <column name="RELATIONSHIP_TYPE"
> target="DOCUMENT_RELATIONSHIP_TYPE" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="9" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="RelatedDocumentImpl.relationshipType"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.TemplateNode"/>
>
>
>
>     <class name="TemplateNodeImpl" table="TEMPLATE_NODE"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.TemplateNodeImpl$OID">
>
>       <extension vendor-name="kodo" key="subclass-fetch-mode"
> value="none"/>
>
>       <implements name="com.peacetech.dts.TemplateNode"/>
>
>       <inheritance strategy="new-table">
>
>         <discriminator strategy="value-map" value="100"
> column="JDO_CLASS"/>
>
>       </inheritance>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="id" primary-key="true" null-value="exception">
>
>         <column name="TEMPLATE_NODE_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="name" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="64" scale="0"/>
>
>       </field>
>
>       <field name="createDate">
>
>         <column name="CREATE_DATE" jdbc-type="DATE" sql-type="DATE"
> length="7" scale="0"/>
>
>       </field>
>
>       <field name="updateDate">
>
>         <column name="UPDATE_DATE" jdbc-type="DATE" sql-type="DATE"
> length="7" scale="0"/>
>
>       </field>
>
>       <field name="updateUser">
>
>         <column name="UPDATE_USER" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>       </field>
>
>       <field name="parent" >  <!-- N-1 (ref) -->
>
>         <column name="PARENT" target="TEMPLATE_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateNodeImpl.parent"/>
>
>       </field>
>
>       <field name="subNodes" table="TEMPLATE_NODE" mapped-by="parent">
> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.TemplateNodeImpl"/>
>
>         <order column="PARENT_SORT_ORDER"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateNodeImpl.subNodes"/>
>
>       </field>
>
>       <field name="priorVersion" >  <!-- N-1 (ref) -->
>
>         <column name="PRIOR_VERSION" target="TEMPLATE_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateNodeImpl.priorVersion"/>
>
>       </field>
>
>       <field name="nextVersion" table="TEMPLATE_NODE"
> mapped-by="priorVersion"> <!-- 1-1 -->
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateNodeImpl.nextVersion"/>
>
>       </field>
>
>       <field name="properties" table="TEMPLATE_NODE_PROPERTY"
> mapped-by="templateNode"> <!-- 1-N -->
>
>         <collection
> element-type="com.peacetech.dts.jdo.TemplateNodePropertyImpl"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateNodeImpl.properties"/>
>
>       </field>
>
>       <field name="ownerComponent"  null-value="exception">  <!-- N-1
> (ref) -->
>
>         <column name="OWNER_COMPONENT" target="TEMPLATE_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateNodeImpl.ownerComponent"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.TemplateNodeProperty"/>
>
>
>
>     <class name="TemplateNodePropertyImpl"
> table="TEMPLATE_NODE_PROPERTY" identity-type="application"
> objectid-class="com.peacetech.dts.jdo.TemplateNodePropertyImpl$OID">
>
>       <implements name="com.peacetech.dts.TemplateNodeProperty"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="templateNodeId" primary-key="true"
> null-value="exception">
>
>         <column name="TEMPLATE_NODE_ID" jdbc-type="DECIMAL"
> sql-type="NUMBER" length="12" scale="0"/>
>
>       </field>
>
>       <field name="nameId" primary-key="true" null-value="exception">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="value" primary-key="true" null-value="exception">
>
>         <column name="VALUE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="definition"  null-value="exception">  <!-- N-1  
> (ref)
> -->
>
>         <column name="NAME" target="NAME" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="32" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateNodePropertyImpl.definition"/>
>
>       </field>
>
>       <field name="templateNode"  null-value="exception">  <!-- N-1
> (ref) -->
>
>         <column name="TEMPLATE_NODE_ID" target="TEMPLATE_NODE_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateNodePropertyImpl.templateNode"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.TemplateRule"/>
>
>
>
>     <class name="TemplateRuleImpl" table="TEMPLATE_RULE"
> identity-type="application"
> objectid-class="com.peacetech.dts.jdo.TemplateRuleImpl$OID">
>
>       <implements name="com.peacetech.dts.TemplateRule"/>
>
>       <version strategy="version-number" column="JDO_LOCK"/>
>
>       <field name="id" primary-key="true" null-value="exception">
>
>         <column name="RULE_ID" jdbc-type="DECIMAL" sql-type="NUMBER"
> length="12" scale="0"/>
>
>       </field>
>
>       <field name="type" null-value="exception">
>
>         <column name="TYPE" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="name">
>
>         <column name="NAME" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="32" scale="0"/>
>
>       </field>
>
>       <field name="description">
>
>         <column name="DESCRIPTION" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="80" scale="0"/>
>
>       </field>
>
>       <field name="text">
>
>         <column name="TEXT" jdbc-type="VARCHAR" sql-type="VARCHAR2"
> length="1024" scale="0"/>
>
>       </field>
>
>       <field name="content"  null-value="exception">  <!-- N-1  
> (ref) -->
>
>         <column name="CONTENT_ID" target="CONTENT_ID"
> jdbc-type="DECIMAL" sql-type="NUMBER" length="12" scale="0"/>
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="TemplateRuleImpl.content"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.ComponentNode"/>
>
>
>
>     <class name="ComponentNodeImpl" identity-type="application"
> persistence-capable-
> superclass="com.peacetech.dts.jdo.TemplateNodeImpl">
>
>       <implements name="com.peacetech.dts.ComponentNode"/>
>
>       <inheritance strategy="superclass-table">
>
>         <discriminator value="130"/>
>
>       </inheritance>
>
>       <field name="referenceNumber">
>
>         <column name="REFERENCE_NUMBER" jdbc-type="VARCHAR"
> sql-type="VARCHAR2" length="16" scale="0"/>
>
>       </field>
>
>       <field name="ownedContent" table="CONTENT" mapped-by="owner">  
> <!--
> 1-1 -->
>
>         <extension vendor-name="kodo" key="fetch-group"
> value="ComponentNodeImpl.ownedContent"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.Template"/>
>
>
>
>     <class name="TemplateImpl" identity-type="application"
> persistence-capable-superclass="com.peacetech.dts.jdo.ComponentImpl">
>
>       <implements name="com.peacetech.dts.Template"/>
>
>       <inheritance strategy="superclass-table">
>
>         <discriminator value="120"/>
>
>       </inheritance>
>
>       <field name="notes">
>
>         <column name="NOTES" jdbc-type="CLOB" sql-type="CLOB"
> length="-1" scale="0"/>
>
>       </field>
>
>     </class>
>
>
>
>     <interface name="com.peacetech.dts.ShareNode"/>
>
>
>
>     <class name="ShareNodeImpl" identity-type="application"
> persistence-capable-
> superclass="com.peacetech.dts.jdo.ComponentNodeImpl"
>>
>
>       <implements name="com.peacetech.dts.ShareNode"/>
>
>       <inh
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

RE: Why would Kodo refuse to batch inserts in certain tables? Big performance drop migrating to Kodo 4.1

Roytman, Alex
In reply to this post by Roytman, Alex
Here are some fixed bugs with batching:

Bug 1347809  Corrupt data possible using setNull(n,java.sql.Types.DATE)
with batch executes
 This note gives a brief overview of bug 1347809.

Affects:
Product (Component) JDBC (OCI JDBC driver)
Range of versions believed to be affected Versions < 9.2  
Versions confirmed as being affected 9.0.1.2
 
Platforms affected Generic (all / most platforms affected)

Fixed:
This issue is fixed in 9.0.1.3 (Server Patch Set)
9.2.0.1 (Base Release)
 

Symptoms:
Corruption (Logical)
Related To:
JDBC
Description


Using the PreparedStatement's setNull() method to set
DATE fields to NULL with batch execution can result
in data corruption.
eg: Using pstmt.setNull(6, java.sql.Types.DATE) with
    pstmt.setExecuteBatch(100) can lead to data corruption.

Workaround:
  Use pstmt.setString(6,null) instead.

========================================================================
===
Bug 4390125  JDBC update count is wrong with batching
 This note gives a brief overview of bug 4390125.

Affects:
Product (Component) JDBC (Oci)
Range of versions believed to be affected Versions < 11  
Versions confirmed as being affected 9.2.0.6
10.1.0.4
10.2.0.1
 
Platforms affected Generic (all / most platforms affected)

Fixed:
This issue is fixed in 9.2.0.8 (Server Patch Set)
10.1.0.5 (Server Patch Set)
10.2.0.2 (Server Patch Set)
11g (Future version)
 

Symptoms: Related To:
Wrong Results
 JDBC
 

Description
When using batching in JDBC clients the update count may be wrong if
the type is changed.

eg:
  ExecuteBatchSize (3)
  Insert (11, "test11")
  Insert (22, new StringReader ("test22"), 10)
  sendBatch,
  ^
  The update count may show as 1

Workaround:
  Do not change types during Batching.
========================================================================
===

TIP:  Click help for a detailed explanation of this page.
 Bookmark Go to End

Subject:  Bug 4183195 - Calling commit during "standard batching"
incorrectly discards pending batches
  Doc ID:  Note:4183195.8 Type:  PATCH
  Last Revision Date:  03-OCT-2005 Status:  PUBLISHED
 Click here for details of sections in this note.

Bug 4183195  Calling commit during "standard batching" incorrectly
discards pending batches
 This note gives a brief overview of bug 4183195.

Affects:
Product (Component) JDBC (JDBC for Java)
Range of versions believed to be affected Versions < 10.2  
Versions confirmed as being affected 10.1.0.4
 
Platforms affected Generic (all / most platforms affected)

Fixed:
This issue is fixed in 10.1.0.5 (Server Patch Set)
10.2.0.1 (Base Release)
 

Symptoms: Related To:
Corruption (Logical)
 JDBC
 

Description
JDBC has incorrect resetting of the batch-buffer with standard
JDBC batching upon commit().

eg:
  Using standard JDBC-batch style, do an update and addBatch(),
  call commit().
  Do a 2nd update and addBatch(), executeBatch(), and commit() again.
  ^
  Only the 2nd update appears in the database.

Workaround:
  Do not call commit() before calling executeBatch().


========================================================================
===

Bug 4177549  Hang when executing a JDBC batch with large stream bind
 This note gives a brief overview of bug 4177549.

Affects:
Product (Component) JDBC (JDBC for Java)
Range of versions believed to be affected Versions < 10.2  
Versions confirmed as being affected 9.2.0.6
10.1.0.4
 
Platforms affected Generic (all / most platforms affected)

Fixed:
This issue is fixed in 10.1.0.5 (Server Patch Set)
10.2.0.1 (Base Release)
 

Symptoms: Related To:
Hang (Process Hang)
 JDBC
 

Description
Binding a smaller sized stream followed by larger sized stream
can lead to a hang in a JDBC client.

eg:
 Do Jdbc batching
 make sure that the batching happens in two iterations and the latter is
a stream bind.
 eg: binding stream of 2K & a stream of 36K.
     similar to:
           String sql = "INSERT INTO test (aClob) VALUES (?)";
           stmt = conn.prepareStatement(sql);
           stmt.setCharacterStream(1, createClobData(3999, 'a'), 3999);
           stmt.addBatch();
           stmt.setCharacterStream(1, createClobData(4001, 'b'), 4001);
           stmt.addBatch();
           stmt.executeBatch();


Workaround:
  Bind all binds >= 32k before binds for < 32k.

========================================================================
===
TIP:  Click help for a detailed explanation of this page.
 Bookmark Go to End

Subject:  Bug 4044730 - commit using oracle JDBC update batching may
cause data loss
  Doc ID:  Note:4044730.8 Type:  PATCH
  Last Revision Date:  21-FEB-2006 Status:  PUBLISHED
 Click here for details of sections in this note.

Bug 4044730  commit using oracle JDBC update batching may cause data
loss
 This note gives a brief overview of bug 4044730.

Affects:
Product (Component) JDBC (JDBC for Java)
Range of versions believed to be affected Versions < 10.2  
Versions confirmed as being affected 10.1.0.4
 
Platforms affected Generic (all / most platforms affected)

Fixed:
This issue is fixed in 9.2.0.8 (Server Patch Set)
10.1.0.5 (Server Patch Set)
10.2.0.1 (Base Release)
 

Symptoms: Related To:
Corruption (Logical)
 JDBC
 

Description
Commit using oracle JDBC update batching may cause data loss or
report an error.


eg:
  Prepare a Statement for a INSERT SQL string with static binds.
  Set execute batch as 5
  do executeQuery 7 times.
  ^
  thin: Only 2 records inserted
  oci8: "invalid iteration count 0 "

Workaround:
  Do not use batching.
 or
  Use batching only when there are binds.


-----Original Message-----
From: Marc Prud'hommeaux [mailto:[hidden email]] On Behalf Of
Marc Prud'hommeaux
Sent: Tuesday, October 17, 2006 4:57 PM
To: [hidden email]
Subject: Re: Why would Kodo refuse to batch inserts in certain tables?
Big performance drop migrating to Kodo 4.1

Alex-

Since the non-batched statement contains a Date field, this is due to  
the workaround for the Oracle JDBC driver bug I mentioned before.

Kodo will not batch statements that contains a Date field when  
interacting with Oracle.

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

RE: Why would Kodo refuse to batch inserts in certain tables? Big performance drop migrating to Kodo 4.1

Roytman, Alex
In reply to this post by Roytman, Alex
Marc,

In Kodo 3.4 OracleDictionary:

public boolean canBatch(Column col)
    {
        switch(col.getType())
        {
        case 2004:
        case 2005:
            return false;
        }
        return true;
    }


In Kodo 4.1 OracleAdvancedSQL:

    public boolean canBatch(Column col)
    {
        switch(col.getType())
        {
        case 2004:
        case 2005:
            return false;

        case 91:
            return false;
        }
        return true;
    }


So obviously this behavior change has been introduced in Kodo 4.x and
was not in 3.x branch. We have been using batching with dates using Kodo
3.4 with up to date drivers for quite a while.

I defined custom OracleAdvancedSQL implementation re-enabling DATE
batching. I did not see any immediate problems running with latest
drivers against latest oracle 10g.

I will be glad to test it for you with latest 10.2.x and 9.2.x drivers
if you can tell me what kind of problems you were experiencing with date
batching

Alex



-----Original Message-----
From: Marc Prud'hommeaux [mailto:[hidden email]] On Behalf Of
Marc Prud'hommeaux
Sent: Tuesday, October 17, 2006 4:57 PM
To: [hidden email]
Subject: Re: Why would Kodo refuse to batch inserts in certain tables?
Big performance drop migrating to Kodo 4.1

Alex-

Since the non-batched statement contains a Date field, this is due to  
the workaround for the Oracle JDBC driver bug I mentioned before.

Kodo will not batch statements that contains a Date field when  
interacting with Oracle.


Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Why would Kodo refuse to batch inserts in certain tables? Big performance drop migrating to Kodo 4.1

Marc Prud'hommeaux
Alex-

If it works for you, then using your own custom OracleAdvancedSQL  
should do the trick.

The main reason we disabled is was due to one of the bugs you  
mentioned before: some driver/database versions would return an  
incorrect batch update count when people insert interleaved null/non-
null Date fields, which led to optimisitic violations. Since there is  
little specificity from Oracle about the exact combinations that this  
affects, we opted to disable batching for Dates altogether, similar  
to how we disable it for Blob/Clob columns.



On Oct 17, 2006, at 4:27 PM, Roytman, Alex wrote:

> Marc,
>
> In Kodo 3.4 OracleDictionary:
>
> public boolean canBatch(Column col)
>     {
>         switch(col.getType())
>         {
>         case 2004:
>         case 2005:
>             return false;
>         }
>         return true;
>     }
>
>
> In Kodo 4.1 OracleAdvancedSQL:
>
>     public boolean canBatch(Column col)
>     {
>         switch(col.getType())
>         {
>         case 2004:
>         case 2005:
>             return false;
>
>         case 91:
>             return false;
>         }
>         return true;
>     }
>
>
> So obviously this behavior change has been introduced in Kodo 4.x and
> was not in 3.x branch. We have been using batching with dates using  
> Kodo
> 3.4 with up to date drivers for quite a while.
>
> I defined custom OracleAdvancedSQL implementation re-enabling DATE
> batching. I did not see any immediate problems running with latest
> drivers against latest oracle 10g.
>
> I will be glad to test it for you with latest 10.2.x and 9.2.x drivers
> if you can tell me what kind of problems you were experiencing with  
> date
> batching
>
> Alex
>
>
>
> -----Original Message-----
> From: Marc Prud'hommeaux [mailto:[hidden email]] On  
> Behalf Of
> Marc Prud'hommeaux
> Sent: Tuesday, October 17, 2006 4:57 PM
> To: [hidden email]
> Subject: Re: Why would Kodo refuse to batch inserts in certain tables?
> Big performance drop migrating to Kodo 4.1
>
> Alex-
>
> Since the non-batched statement contains a Date field, this is due to
> the workaround for the Oracle JDBC driver bug I mentioned before.
>
> Kodo will not batch statements that contains a Date field when
> interacting with Oracle.
>
>

Loading...