You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-user@db.apache.org by Clay Mitchell <cl...@pfd.net> on 2004/02/07 18:16:02 UTC

Help, I'm stuck and I can't get out! (Infinite Loop)

I seem to have gotten myself stuck in a infinite loop here...

Any idea what it's doing and why?

Thanks
-Clay

[org.apache.ojb.broker.core.QueryReferenceBroker] DEBUG: 
getCollectionByQuery (class 
org.apache.ojb.broker.util.collections.RemovalAwareCollection, class 
com.exigentic.onyx.ProductType, Query from class 
com.exigentic.onyx.ProductType where [id IN [79, 28, 112]])
[org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement$TableAlias] 
DEBUG: TableAlias(): using hints ? false

[org.apache.ojb.broker.core.QueryReferenceBroker] DEBUG: 
getCollectionByQuery (class 
org.apache.ojb.broker.util.collections.RemovalAwareCollection, class 
com.exigentic.onyx.Specification, Query from class 
com.exigentic.onyx.Specification where [id IN [79, 28, 112]])
[org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement$TableAlias] 
DEBUG: TableAlias(): using hints ? false

[org.apache.ojb.broker.core.QueryReferenceBroker] DEBUG: 
getCollectionByQuery (class 
org.apache.ojb.broker.util.collections.RemovalAwareCollection, class 
com.exigentic.onyx.Product, Query from class com.exigentic.onyx.Product 
where [id IN [79, 28, 112]])
[org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement$TableAlias] 
DEBUG: TableAlias(): using hints ? false

[org.apache.ojb.broker.core.QueryReferenceBroker] DEBUG: 
getCollectionByQuery (class 
org.apache.ojb.broker.util.collections.RemovalAwareCollection, class 
com.exigentic.onyx.SpecType, Query from class 
com.exigentic.onyx.SpecType where [id IN [79, 28, 112]])
[org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement$TableAlias] 
DEBUG: TableAlias(): using hints ? false

[org.apache.ojb.broker.core.QueryReferenceBroker] DEBUG: 
getCollectionByQuery (class 
org.apache.ojb.broker.util.collections.RemovalAwareCollection, class 
com.exigentic.onyx.Specification, Query from class 
com.exigentic.onyx.Specification where [specId = 28])
[org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement$TableAlias] 
DEBUG: TableAlias(): using hints ? false


###### Here's my repository:

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

<!DOCTYPE descriptor-repository PUBLIC "-//Apache Software 
Foundation//DTD OJB Repository//EN" "repository.dtd">

<descriptor-repository version="1.0" isolation-level="read-uncommitted">
	<jdbc-connection-descriptor jcd-alias="default" 
default-connection="true" platform="PostgreSQL" jdbc-level="3.0" 
driver="org.postgresql.Driver" protocol="jdbc" subprotocol="postgresql" 
dbalias="//192.168.1.101:5432/onyx" username="postgres" 
password="t30a6az8z" eager-release="false" batch-mode="false" 
useAutoCommit="1" ignoreAutoCommitExceptions="false">
		<connection-pool maxActive="21" validationQuery=""/>
		<sequence-manager 
className="org.apache.ojb.broker.util.sequence.SequenceManagerNextValImpl">
			<attribute attribute-name="autoNaming" attribute-value="true"/>
		</sequence-manager>
	</jdbc-connection-descriptor>
	<class-descriptor class="com.exigentic.onyx.Account" table="ACCOUNT">
		<field-descriptor name="id" primarykey="true" default-fetch="true" 
autoincrement="true" sequence-name="account_seq'::text" 
column="ACCOUNT_ID" jdbc-type="INTEGER"/>
		<field-descriptor name="email" nullable="false" default-fetch="true" 
column="EMAIL" jdbc-type="VARCHAR"/>
		<field-descriptor name="password" nullable="false" 
default-fetch="true" column="PASSWORD" jdbc-type="VARCHAR"/>
		<field-descriptor name="firstName" nullable="false" 
default-fetch="true" column="NAME_FIRST" jdbc-type="VARCHAR"/>
		<field-descriptor name="lastName" nullable="false" 
default-fetch="true" column="NAME_LAST" jdbc-type="VARCHAR"/>
		<field-descriptor name="company" default-fetch="true" column="COMPANY" 
jdbc-type="VARCHAR"/>
		<field-descriptor name="phone" nullable="false" default-fetch="true" 
column="PHONE" jdbc-type="VARCHAR"/>
		<field-descriptor name="fax" default-fetch="true" column="FAX" 
jdbc-type="VARCHAR"/>
		<field-descriptor name="addr1" nullable="false" default-fetch="true" 
column="ADDR_1" jdbc-type="VARCHAR"/>
		<field-descriptor name="addr2" default-fetch="true" column="ADDR_2" 
jdbc-type="VARCHAR"/>
		<field-descriptor name="city" nullable="false" default-fetch="true" 
column="CITY" jdbc-type="VARCHAR"/>
		<field-descriptor name="state" nullable="false" default-fetch="true" 
column="STATE" jdbc-type="VARCHAR"/>
		<field-descriptor name="country" nullable="false" default-fetch="true" 
column="COUNTRY" jdbc-type="VARCHAR"/>
		<field-descriptor name="zip" nullable="false" default-fetch="true" 
column="ZIP" jdbc-type="VARCHAR"/>
		<field-descriptor name="security" nullable="false" 
default-fetch="true" column="SECURITY" jdbc-type="INTEGER"/>
		<field-descriptor name="sourceDate" nullable="false" 
default-fetch="true" column="SOURCE_DATE" jdbc-type="TIMESTAMP" 
conversion="org.apache.ojb.broker.accesslayer.conversions.JavaDate2SqlTimestampFieldConversion"/>
	</class-descriptor>
	
	<class-descriptor class="com.exigentic.onyx.Option" table="OPTION">
		<field-descriptor name="id" primarykey="true" default-fetch="true" 
autoincrement="true" sequence-name="option_seq'::text" 
column="OPTION_ID" jdbc-type="INTEGER"/>
		<field-descriptor name="productId" nullable="false" 
default-fetch="true" column="PRODUCT_ID" jdbc-type="INTEGER"/>
		<field-descriptor name="childId" nullable="false" default-fetch="true" 
column="PRODUCT_OPTION" jdbc-type="INTEGER"/>
	</class-descriptor>
	
	<class-descriptor class="com.exigentic.onyx.Product" table="PRODUCT">
		<field-descriptor name="id" primarykey="true" default-fetch="true" 
autoincrement="true" sequence-name="product_seq'::text" 
column="PRODUCT_ID" jdbc-type="INTEGER"/>
		<field-descriptor name="typeId" nullable="false" default-fetch="true" 
autoincrement="true" sequence-name="type_seq'::text" column="TYPE_ID" 
jdbc-type="INTEGER"/>
		<field-descriptor name="code" nullable="false" default-fetch="true" 
column="CODE" jdbc-type="VARCHAR"/>
		<field-descriptor name="name" nullable="false" default-fetch="true" 
column="NAME" jdbc-type="VARCHAR"/>
		<field-descriptor name="descr" nullable="false" default-fetch="true" 
column="DESCR" jdbc-type="VARCHAR"/>
		<field-descriptor name="option" nullable="false" default-fetch="true" 
column="OPTION" jdbc-type="CHAR"/>
		<field-descriptor name="distributor" nullable="false" 
default-fetch="true" column="DISTRIBUTOR" jdbc-type="CHAR"/>
		<field-descriptor name="distPrice" default-fetch="true" 
column="DIST_PRICE" jdbc-type="DOUBLE"/>
		<field-descriptor name="listPrice" default-fetch="true" 
column="LIST_PRICE" jdbc-type="DOUBLE"/>
		<field-descriptor name="highlight" default-fetch="true" 
column="HIGHLIGHT" jdbc-type="CHAR"/>
		<reference-descriptor name="productType" 
class-ref="com.exigentic.onyx.ProductType" auto-update="false" 
auto-delete="false">
			<foreignkey field-ref="id"/>
		</reference-descriptor>
		<collection-descriptor name="specs" 
element-class-ref="com.exigentic.onyx.Specification" auto-update="false" 
auto-delete="false">
			<inverse-foreignkey field-ref="id"/>
		</collection-descriptor>
	</class-descriptor>
	
	<class-descriptor class="com.exigentic.onyx.Image" table="PRODUCT_IMAGE">
		<field-descriptor name="id" primarykey="true" default-fetch="true" 
autoincrement="true" sequence-name="image_seq'::text" column="IMAGE_ID" 
jdbc-type="INTEGER"/>
		<field-descriptor name="productId" default-fetch="true" 
column="PRODUCT_ID" jdbc-type="INTEGER"/>
		<field-descriptor name="image" nullable="false" default-fetch="true" 
column="IMAGE" jdbc-type="VARCHAR"/>
		<field-descriptor name="defaultImage" nullable="false" 
default-fetch="true" column="DEFAULT_IMAGE" jdbc-type="CHAR"/>
	</class-descriptor>
	
	<class-descriptor class="com.exigentic.onyx.Specification" 
table="PRODUCT_SPECIFICATION">
		<field-descriptor name="id" primarykey="true" default-fetch="true" 
autoincrement="true" sequence-name="spec_seq'::text" column="SPEC_ID" 
jdbc-type="INTEGER"/>
		<field-descriptor name="productId" primarykey="true" 
default-fetch="true" column="PRODUCT_ID" jdbc-type="INTEGER"/>
		<field-descriptor name="specId" primarykey="true" default-fetch="true" 
column="SPECIFICATION_ID" jdbc-type="INTEGER"/>
		<field-descriptor name="value" nullable="false" default-fetch="true" 
column="VALUE" jdbc-type="VARCHAR"/>
		<reference-descriptor name="product" 
class-ref="com.exigentic.onyx.Product" auto-update="false" 
auto-delete="false">
			<foreignkey field-ref="id"/>
		</reference-descriptor>
		<reference-descriptor name="specType" 
class-ref="com.exigentic.onyx.SpecType" auto-update="false" 
auto-delete="false">
			<foreignkey field-ref="id"/>
		</reference-descriptor>
	</class-descriptor>
	
	<class-descriptor class="com.exigentic.onyx.ProductType" 
table="PRODUCT_TYPE">
		<field-descriptor name="id" primarykey="true" default-fetch="true" 
autoincrement="true" sequence-name="type_seq'::text" column="TYPE_ID" 
jdbc-type="INTEGER"/>
		<field-descriptor name="name" nullable="false" default-fetch="true" 
column="NAME" jdbc-type="VARCHAR"/>
		<field-descriptor name="descr" default-fetch="true" column="DESCR" 
jdbc-type="VARCHAR"/>
		<collection-descriptor name="productList" 
element-class-ref="com.exigentic.onyx.Product" auto-update="false" 
auto-delete="false">
			<inverse-foreignkey field-ref="typeId"/>
		</collection-descriptor>
	</class-descriptor>
	
	<class-descriptor class="com.exigentic.onyx.SpecType" 
table="SPECIFICATION_TYPE">
		<field-descriptor name="id" primarykey="true" default-fetch="true" 
autoincrement="true" sequence-name="specification_seq'::text" 
column="SPECIFICATION_ID" jdbc-type="INTEGER"/>
		<field-descriptor name="name" nullable="false" default-fetch="true" 
column="NAME" jdbc-type="VARCHAR"/>
		<field-descriptor name="descr" default-fetch="true" column="DESCR" 
jdbc-type="VARCHAR"/>
		<collection-descriptor name="specs" 
element-class-ref="com.exigentic.onyx.Specification" auto-update="false" 
auto-delete="false">
			<inverse-foreignkey field-ref="specId"/>
		</collection-descriptor>
	</class-descriptor>
</descriptor-repository>


---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org


Re: Help, I'm stuck and I can't get out! (Infinite Loop)

Posted by ed...@mgrinformatica.com.br.
It isn't a bug. Actually, it's a "Feature by design". Since I don't maintain cache of
objects (this is the behaviour of EmptyCache), there is no way to know that the object is
loaded. So it will load. If the loaded object has references to the first object, it will
load the first object again, and so on.

In the circunstances where I can't avoid two way navigable references, I use object-cache
tag per object. In all other places I work with EmptyCache and there is no problem.

Thats my experience, and may not be true for rc5, since I working with some outdated HEAD rc4.

Best regards,

Edson Richter


> For the slow people in the class, can you please explain this problem in
> a little more detail?  If I have to tweak cache timeouts to get correct
> behavior on simple references, then there 's a bug hiding in here somewhere.
>
> Thanks.
>
> Edson Carlos Ericksson Richter wrote:
>
>>Exists some circustantes that results in infinite loop due to use of EmptyCache with two
>> way navigable references. Are you using this? If yes, try to set a <object-cache> in the
>> recerenced bean with a very low time-out (let's say, 1 sec). It solved almost vast majority
>> of my cases.
>>
>>Best regards,
>>
>>Edson Richter
>>
>>  ----- Original Message -----
>>  From: Clay Mitchell
>>  To: OJB Users List
>>  Sent: Saturday, February 07, 2004 2:16 PM
>>  Subject: Help, I'm stuck and I can't get out! (Infinite Loop)
>>
>>
>>  I seem to have gotten myself stuck in a infinite loop here...
>>
>>  Any idea what it's doing and why?
>>
>>  Thanks
>>  -Clay
>>
>>  [org.apache.ojb.broker.core.QueryReferenceBroker] DEBUG:
>>  getCollectionByQuery (class
>>  org.apache.ojb.broker.util.collections.RemovalAwareCollection, class
>>  com.exigentic.onyx.ProductType, Query from class
>>  com.exigentic.onyx.ProductType where [id IN [79, 28, 112]])
>>  [org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement$TableAlias]
>>  DEBUG: TableAlias(): using hints ? false
>>
>>  [org.apache.ojb.broker.core.QueryReferenceBroker] DEBUG:
>>  getCollectionByQuery (class
>>  org.apache.ojb.broker.util.collections.RemovalAwareCollection, class
>>  com.exigentic.onyx.Specification, Query from class
>>  com.exigentic.onyx.Specification where [id IN [79, 28, 112]])
>>  [org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement$TableAlias]
>>  DEBUG: TableAlias(): using hints ? false
>>
>>  [org.apache.ojb.broker.core.QueryReferenceBroker] DEBUG:
>>  getCollectionByQuery (class
>>  org.apache.ojb.broker.util.collections.RemovalAwareCollection, class
>>  com.exigentic.onyx.Product, Query from class com.exigentic.onyx.Product
>>  where [id IN [79, 28, 112]])
>>  [org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement$TableAlias]
>>  DEBUG: TableAlias(): using hints ? false
>>
>>  [org.apache.ojb.broker.core.QueryReferenceBroker] DEBUG:
>>  getCollectionByQuery (class
>>  org.apache.ojb.broker.util.collections.RemovalAwareCollection, class
>>  com.exigentic.onyx.SpecType, Query from class
>>  com.exigentic.onyx.SpecType where [id IN [79, 28, 112]])
>>  [org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement$TableAlias]
>>  DEBUG: TableAlias(): using hints ? false
>>
>>  [org.apache.ojb.broker.core.QueryReferenceBroker] DEBUG:
>>  getCollectionByQuery (class
>>  org.apache.ojb.broker.util.collections.RemovalAwareCollection, class
>>  com.exigentic.onyx.Specification, Query from class
>>  com.exigentic.onyx.Specification where [specId = 28])
>>  [org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement$TableAlias]
>>  DEBUG: TableAlias(): using hints ? false
>>
>>
>>  ###### Here's my repository:
>>
>>  <?xml version="1.0" encoding="UTF-8"?>
>>
>>  <!DOCTYPE descriptor-repository PUBLIC "-//Apache Software
>>  Foundation//DTD OJB Repository//EN" "repository.dtd">
>>
>>  <descriptor-repository version="1.0" isolation-level="read-uncommitted">
>>  <jdbc-connection-descriptor jcd-alias="default"
>>  default-connection="true" platform="PostgreSQL" jdbc-level="3.0"
>>  driver="org.postgresql.Driver" protocol="jdbc" subprotocol="postgresql"
>>  dbalias="//192.168.1.101:5432/onyx" username="postgres"
>>  password="t30a6az8z" eager-release="false" batch-mode="false"
>>  useAutoCommit="1" ignoreAutoCommitExceptions="false">
>>  <connection-pool maxActive="21" validationQuery=""/>
>>  <sequence-manager
>>  className="org.apache.ojb.broker.util.sequence.SequenceManagerNextValImpl">
>>  <attribute attribute-name="autoNaming" attribute-value="true"/>
>>  </sequence-manager>
>>  </jdbc-connection-descriptor>
>>  <class-descriptor class="com.exigentic.onyx.Account" table="ACCOUNT">
>>  <field-descriptor name="id" primarykey="true" default-fetch="true"
>>  autoincrement="true" sequence-name="account_seq'::text"
>>  column="ACCOUNT_ID" jdbc-type="INTEGER"/>
>>  <field-descriptor name="email" nullable="false" default-fetch="true"
>>  column="EMAIL" jdbc-type="VARCHAR"/>
>>  <field-descriptor name="password" nullable="false"
>>  default-fetch="true" column="PASSWORD" jdbc-type="VARCHAR"/>
>>  <field-descriptor name="firstName" nullable="false"
>>  default-fetch="true" column="NAME_FIRST" jdbc-type="VARCHAR"/>
>>  <field-descriptor name="lastName" nullable="false"
>>  default-fetch="true" column="NAME_LAST" jdbc-type="VARCHAR"/>
>>  <field-descriptor name="company" default-fetch="true" column="COMPANY"
>>  jdbc-type="VARCHAR"/>
>>  <field-descriptor name="phone" nullable="false" default-fetch="true"
>>  column="PHONE" jdbc-type="VARCHAR"/>
>>  <field-descriptor name="fax" default-fetch="true" column="FAX"
>>  jdbc-type="VARCHAR"/>
>>  <field-descriptor name="addr1" nullable="false" default-fetch="true"
>>  column="ADDR_1" jdbc-type="VARCHAR"/>
>>  <field-descriptor name="addr2" default-fetch="true" column="ADDR_2"
>>  jdbc-type="VARCHAR"/>
>>  <field-descriptor name="city" nullable="false" default-fetch="true"
>>  column="CITY" jdbc-type="VARCHAR"/>
>>  <field-descriptor name="state" nullable="false" default-fetch="true"
>>  column="STATE" jdbc-type="VARCHAR"/>
>>  <field-descriptor name="country" nullable="false" default-fetch="true"
>>  column="COUNTRY" jdbc-type="VARCHAR"/>
>>  <field-descriptor name="zip" nullable="false" default-fetch="true"
>>  column="ZIP" jdbc-type="VARCHAR"/>
>>  <field-descriptor name="security" nullable="false"
>>  default-fetch="true" column="SECURITY" jdbc-type="INTEGER"/>
>>  <field-descriptor name="sourceDate" nullable="false"
>>  default-fetch="true" column="SOURCE_DATE" jdbc-type="TIMESTAMP"
>>  conversion="org.apache.ojb.broker.accesslayer.conversions.JavaDate2SqlTimestampFieldConversion"/>
>>  </class-descriptor>
>>
>>  <class-descriptor class="com.exigentic.onyx.Option" table="OPTION">
>>  <field-descriptor name="id" primarykey="true" default-fetch="true"
>>  autoincrement="true" sequence-name="option_seq'::text"
>>  column="OPTION_ID" jdbc-type="INTEGER"/>
>>  <field-descriptor name="productId" nullable="false"
>>  default-fetch="true" column="PRODUCT_ID" jdbc-type="INTEGER"/>
>>  <field-descriptor name="childId" nullable="false" default-fetch="true"
>>  column="PRODUCT_OPTION" jdbc-type="INTEGER"/>
>>  </class-descriptor>
>>
>>  <class-descriptor class="com.exigentic.onyx.Product" table="PRODUCT">
>>  <field-descriptor name="id" primarykey="true" default-fetch="true"
>>  autoincrement="true" sequence-name="product_seq'::text"
>>  column="PRODUCT_ID" jdbc-type="INTEGER"/>
>>  <field-descriptor name="typeId" nullable="false" default-fetch="true"
>>  autoincrement="true" sequence-name="type_seq'::text" column="TYPE_ID"
>>  jdbc-type="INTEGER"/>
>>  <field-descriptor name="code" nullable="false" default-fetch="true"
>>  column="CODE" jdbc-type="VARCHAR"/>
>>  <field-descriptor name="name" nullable="false" default-fetch="true"
>>  column="NAME" jdbc-type="VARCHAR"/>
>>  <field-descriptor name="descr" nullable="false" default-fetch="true"
>>  column="DESCR" jdbc-type="VARCHAR"/>
>>  <field-descriptor name="option" nullable="false" default-fetch="true"
>>  column="OPTION" jdbc-type="CHAR"/>
>>  <field-descriptor name="distributor" nullable="false"
>>  default-fetch="true" column="DISTRIBUTOR" jdbc-type="CHAR"/>
>>  <field-descriptor name="distPrice" default-fetch="true"
>>  column="DIST_PRICE" jdbc-type="DOUBLE"/>
>>  <field-descriptor name="listPrice" default-fetch="true"
>>  column="LIST_PRICE" jdbc-type="DOUBLE"/>
>>  <field-descriptor name="highlight" default-fetch="true"
>>  column="HIGHLIGHT" jdbc-type="CHAR"/>
>>  <reference-descriptor name="productType"
>>  class-ref="com.exigentic.onyx.ProductType" auto-update="false"
>>  auto-delete="false">
>>  <foreignkey field-ref="id"/>
>>  </reference-descriptor>
>>  <collection-descriptor name="specs"
>>  element-class-ref="com.exigentic.onyx.Specification" auto-update="false"
>>  auto-delete="false">
>>  <inverse-foreignkey field-ref="id"/>
>>  </collection-descriptor>
>>  </class-descriptor>
>>
>>  <class-descriptor class="com.exigentic.onyx.Image" table="PRODUCT_IMAGE">
>>  <field-descriptor name="id" primarykey="true" default-fetch="true"
>>  autoincrement="true" sequence-name="image_seq'::text" column="IMAGE_ID"
>>  jdbc-type="INTEGER"/>
>>  <field-descriptor name="productId" default-fetch="true"
>>  column="PRODUCT_ID" jdbc-type="INTEGER"/>
>>  <field-descriptor name="image" nullable="false" default-fetch="true"
>>  column="IMAGE" jdbc-type="VARCHAR"/>
>>  <field-descriptor name="defaultImage" nullable="false"
>>  default-fetch="true" column="DEFAULT_IMAGE" jdbc-type="CHAR"/>
>>  </class-descriptor>
>>
>>  <class-descriptor class="com.exigentic.onyx.Specification"
>>  table="PRODUCT_SPECIFICATION">
>>  <field-descriptor name="id" primarykey="true" default-fetch="true"
>>  autoincrement="true" sequence-name="spec_seq'::text" column="SPEC_ID"
>>  jdbc-type="INTEGER"/>
>>  <field-descriptor name="productId" primarykey="true"
>>  default-fetch="true" column="PRODUCT_ID" jdbc-type="INTEGER"/>
>>  <field-descriptor name="specId" primarykey="true" default-fetch="true"
>>  column="SPECIFICATION_ID" jdbc-type="INTEGER"/>
>>  <field-descriptor name="value" nullable="false" default-fetch="true"
>>  column="VALUE" jdbc-type="VARCHAR"/>
>>  <reference-descriptor name="product"
>>  class-ref="com.exigentic.onyx.Product" auto-update="false"
>>  auto-delete="false">
>>  <foreignkey field-ref="id"/>
>>  </reference-descriptor>
>>  <reference-descriptor name="specType"
>>  class-ref="com.exigentic.onyx.SpecType" auto-update="false"
>>  auto-delete="false">
>>  <foreignkey field-ref="id"/>
>>  </reference-descriptor>
>>  </class-descriptor>
>>
>>  <class-descriptor class="com.exigentic.onyx.ProductType"
>>  table="PRODUCT_TYPE">
>>  <field-descriptor name="id" primarykey="true" default-fetch="true"
>>  autoincrement="true" sequence-name="type_seq'::text" column="TYPE_ID"
>>  jdbc-type="INTEGER"/>
>>  <field-descriptor name="name" nullable="false" default-fetch="true"
>>  column="NAME" jdbc-type="VARCHAR"/>
>>  <field-descriptor name="descr" default-fetch="true" column="DESCR"
>>  jdbc-type="VARCHAR"/>
>>  <collection-descriptor name="productList"
>>  element-class-ref="com.exigentic.onyx.Product" auto-update="false"
>>  auto-delete="false">
>>  <inverse-foreignkey field-ref="typeId"/>
>>  </collection-descriptor>
>>  </class-descriptor>
>>
>>  <class-descriptor class="com.exigentic.onyx.SpecType"
>>  table="SPECIFICATION_TYPE">
>>  <field-descriptor name="id" primarykey="true" default-fetch="true"
>>  autoincrement="true" sequence-name="specification_seq'::text"
>>  column="SPECIFICATION_ID" jdbc-type="INTEGER"/>
>>  <field-descriptor name="name" nullable="false" default-fetch="true"
>>  column="NAME" jdbc-type="VARCHAR"/>
>>  <field-descriptor name="descr" default-fetch="true" column="DESCR"
>>  jdbc-type="VARCHAR"/>
>>  <collection-descriptor name="specs"
>>  element-class-ref="com.exigentic.onyx.Specification" auto-update="false"
>>  auto-delete="false">
>>  <inverse-foreignkey field-ref="specId"/>
>>  </collection-descriptor>
>>  </class-descriptor>
>>  </descriptor-repository>
>>
>>
>>  ---------------------------------------------------------------------
>>  To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
>>  For additional commands, e-mail: ojb-user-help@db.apache.org
>>
>>
>>
>>  ---
>>  Outgoing mail is certified Virus Free.
>>  Checked by AVG anti-virus system (http://www.grisoft.com).
>>  Version: 6.0.577 / Virus Database: 366 - Release Date: 3/2/2004
>>
>>
>
> --
> Larry V. Streepy, Jr.
> Senior Vice President and CTO
> Health Langugae, Inc.
>


---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org


Re: Help, I'm stuck and I can't get out! (Infinite Loop)

Posted by "Larry V. Streepy, Jr." <st...@healthlanguage.com>.
For the slow people in the class, can you please explain this problem in 
a little more detail?  If I have to tweak cache timeouts to get correct 
behavior on simple references, then there 's a bug hiding in here somewhere.

Thanks.

Edson Carlos Ericksson Richter wrote:

>Exists some circustantes that results in infinite loop due to use of EmptyCache with two way navigable references. Are you using this? If yes, try to set a <object-cache> in the recerenced bean with a very low time-out (let's say, 1 sec). It solved almost vast majority of my cases.
>
>Best regards,
>
>Edson Richter
>
>  ----- Original Message ----- 
>  From: Clay Mitchell 
>  To: OJB Users List 
>  Sent: Saturday, February 07, 2004 2:16 PM
>  Subject: Help, I'm stuck and I can't get out! (Infinite Loop)
>
>
>  I seem to have gotten myself stuck in a infinite loop here...
>
>  Any idea what it's doing and why?
>
>  Thanks
>  -Clay
>
>  [org.apache.ojb.broker.core.QueryReferenceBroker] DEBUG: 
>  getCollectionByQuery (class 
>  org.apache.ojb.broker.util.collections.RemovalAwareCollection, class 
>  com.exigentic.onyx.ProductType, Query from class 
>  com.exigentic.onyx.ProductType where [id IN [79, 28, 112]])
>  [org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement$TableAlias] 
>  DEBUG: TableAlias(): using hints ? false
>
>  [org.apache.ojb.broker.core.QueryReferenceBroker] DEBUG: 
>  getCollectionByQuery (class 
>  org.apache.ojb.broker.util.collections.RemovalAwareCollection, class 
>  com.exigentic.onyx.Specification, Query from class 
>  com.exigentic.onyx.Specification where [id IN [79, 28, 112]])
>  [org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement$TableAlias] 
>  DEBUG: TableAlias(): using hints ? false
>
>  [org.apache.ojb.broker.core.QueryReferenceBroker] DEBUG: 
>  getCollectionByQuery (class 
>  org.apache.ojb.broker.util.collections.RemovalAwareCollection, class 
>  com.exigentic.onyx.Product, Query from class com.exigentic.onyx.Product 
>  where [id IN [79, 28, 112]])
>  [org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement$TableAlias] 
>  DEBUG: TableAlias(): using hints ? false
>
>  [org.apache.ojb.broker.core.QueryReferenceBroker] DEBUG: 
>  getCollectionByQuery (class 
>  org.apache.ojb.broker.util.collections.RemovalAwareCollection, class 
>  com.exigentic.onyx.SpecType, Query from class 
>  com.exigentic.onyx.SpecType where [id IN [79, 28, 112]])
>  [org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement$TableAlias] 
>  DEBUG: TableAlias(): using hints ? false
>
>  [org.apache.ojb.broker.core.QueryReferenceBroker] DEBUG: 
>  getCollectionByQuery (class 
>  org.apache.ojb.broker.util.collections.RemovalAwareCollection, class 
>  com.exigentic.onyx.Specification, Query from class 
>  com.exigentic.onyx.Specification where [specId = 28])
>  [org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement$TableAlias] 
>  DEBUG: TableAlias(): using hints ? false
>
>
>  ###### Here's my repository:
>
>  <?xml version="1.0" encoding="UTF-8"?>
>
>  <!DOCTYPE descriptor-repository PUBLIC "-//Apache Software 
>  Foundation//DTD OJB Repository//EN" "repository.dtd">
>
>  <descriptor-repository version="1.0" isolation-level="read-uncommitted">
>  <jdbc-connection-descriptor jcd-alias="default" 
>  default-connection="true" platform="PostgreSQL" jdbc-level="3.0" 
>  driver="org.postgresql.Driver" protocol="jdbc" subprotocol="postgresql" 
>  dbalias="//192.168.1.101:5432/onyx" username="postgres" 
>  password="t30a6az8z" eager-release="false" batch-mode="false" 
>  useAutoCommit="1" ignoreAutoCommitExceptions="false">
>  <connection-pool maxActive="21" validationQuery=""/>
>  <sequence-manager 
>  className="org.apache.ojb.broker.util.sequence.SequenceManagerNextValImpl">
>  <attribute attribute-name="autoNaming" attribute-value="true"/>
>  </sequence-manager>
>  </jdbc-connection-descriptor>
>  <class-descriptor class="com.exigentic.onyx.Account" table="ACCOUNT">
>  <field-descriptor name="id" primarykey="true" default-fetch="true" 
>  autoincrement="true" sequence-name="account_seq'::text" 
>  column="ACCOUNT_ID" jdbc-type="INTEGER"/>
>  <field-descriptor name="email" nullable="false" default-fetch="true" 
>  column="EMAIL" jdbc-type="VARCHAR"/>
>  <field-descriptor name="password" nullable="false" 
>  default-fetch="true" column="PASSWORD" jdbc-type="VARCHAR"/>
>  <field-descriptor name="firstName" nullable="false" 
>  default-fetch="true" column="NAME_FIRST" jdbc-type="VARCHAR"/>
>  <field-descriptor name="lastName" nullable="false" 
>  default-fetch="true" column="NAME_LAST" jdbc-type="VARCHAR"/>
>  <field-descriptor name="company" default-fetch="true" column="COMPANY" 
>  jdbc-type="VARCHAR"/>
>  <field-descriptor name="phone" nullable="false" default-fetch="true" 
>  column="PHONE" jdbc-type="VARCHAR"/>
>  <field-descriptor name="fax" default-fetch="true" column="FAX" 
>  jdbc-type="VARCHAR"/>
>  <field-descriptor name="addr1" nullable="false" default-fetch="true" 
>  column="ADDR_1" jdbc-type="VARCHAR"/>
>  <field-descriptor name="addr2" default-fetch="true" column="ADDR_2" 
>  jdbc-type="VARCHAR"/>
>  <field-descriptor name="city" nullable="false" default-fetch="true" 
>  column="CITY" jdbc-type="VARCHAR"/>
>  <field-descriptor name="state" nullable="false" default-fetch="true" 
>  column="STATE" jdbc-type="VARCHAR"/>
>  <field-descriptor name="country" nullable="false" default-fetch="true" 
>  column="COUNTRY" jdbc-type="VARCHAR"/>
>  <field-descriptor name="zip" nullable="false" default-fetch="true" 
>  column="ZIP" jdbc-type="VARCHAR"/>
>  <field-descriptor name="security" nullable="false" 
>  default-fetch="true" column="SECURITY" jdbc-type="INTEGER"/>
>  <field-descriptor name="sourceDate" nullable="false" 
>  default-fetch="true" column="SOURCE_DATE" jdbc-type="TIMESTAMP" 
>  conversion="org.apache.ojb.broker.accesslayer.conversions.JavaDate2SqlTimestampFieldConversion"/>
>  </class-descriptor>
>
>  <class-descriptor class="com.exigentic.onyx.Option" table="OPTION">
>  <field-descriptor name="id" primarykey="true" default-fetch="true" 
>  autoincrement="true" sequence-name="option_seq'::text" 
>  column="OPTION_ID" jdbc-type="INTEGER"/>
>  <field-descriptor name="productId" nullable="false" 
>  default-fetch="true" column="PRODUCT_ID" jdbc-type="INTEGER"/>
>  <field-descriptor name="childId" nullable="false" default-fetch="true" 
>  column="PRODUCT_OPTION" jdbc-type="INTEGER"/>
>  </class-descriptor>
>
>  <class-descriptor class="com.exigentic.onyx.Product" table="PRODUCT">
>  <field-descriptor name="id" primarykey="true" default-fetch="true" 
>  autoincrement="true" sequence-name="product_seq'::text" 
>  column="PRODUCT_ID" jdbc-type="INTEGER"/>
>  <field-descriptor name="typeId" nullable="false" default-fetch="true" 
>  autoincrement="true" sequence-name="type_seq'::text" column="TYPE_ID" 
>  jdbc-type="INTEGER"/>
>  <field-descriptor name="code" nullable="false" default-fetch="true" 
>  column="CODE" jdbc-type="VARCHAR"/>
>  <field-descriptor name="name" nullable="false" default-fetch="true" 
>  column="NAME" jdbc-type="VARCHAR"/>
>  <field-descriptor name="descr" nullable="false" default-fetch="true" 
>  column="DESCR" jdbc-type="VARCHAR"/>
>  <field-descriptor name="option" nullable="false" default-fetch="true" 
>  column="OPTION" jdbc-type="CHAR"/>
>  <field-descriptor name="distributor" nullable="false" 
>  default-fetch="true" column="DISTRIBUTOR" jdbc-type="CHAR"/>
>  <field-descriptor name="distPrice" default-fetch="true" 
>  column="DIST_PRICE" jdbc-type="DOUBLE"/>
>  <field-descriptor name="listPrice" default-fetch="true" 
>  column="LIST_PRICE" jdbc-type="DOUBLE"/>
>  <field-descriptor name="highlight" default-fetch="true" 
>  column="HIGHLIGHT" jdbc-type="CHAR"/>
>  <reference-descriptor name="productType" 
>  class-ref="com.exigentic.onyx.ProductType" auto-update="false" 
>  auto-delete="false">
>  <foreignkey field-ref="id"/>
>  </reference-descriptor>
>  <collection-descriptor name="specs" 
>  element-class-ref="com.exigentic.onyx.Specification" auto-update="false" 
>  auto-delete="false">
>  <inverse-foreignkey field-ref="id"/>
>  </collection-descriptor>
>  </class-descriptor>
>
>  <class-descriptor class="com.exigentic.onyx.Image" table="PRODUCT_IMAGE">
>  <field-descriptor name="id" primarykey="true" default-fetch="true" 
>  autoincrement="true" sequence-name="image_seq'::text" column="IMAGE_ID" 
>  jdbc-type="INTEGER"/>
>  <field-descriptor name="productId" default-fetch="true" 
>  column="PRODUCT_ID" jdbc-type="INTEGER"/>
>  <field-descriptor name="image" nullable="false" default-fetch="true" 
>  column="IMAGE" jdbc-type="VARCHAR"/>
>  <field-descriptor name="defaultImage" nullable="false" 
>  default-fetch="true" column="DEFAULT_IMAGE" jdbc-type="CHAR"/>
>  </class-descriptor>
>
>  <class-descriptor class="com.exigentic.onyx.Specification" 
>  table="PRODUCT_SPECIFICATION">
>  <field-descriptor name="id" primarykey="true" default-fetch="true" 
>  autoincrement="true" sequence-name="spec_seq'::text" column="SPEC_ID" 
>  jdbc-type="INTEGER"/>
>  <field-descriptor name="productId" primarykey="true" 
>  default-fetch="true" column="PRODUCT_ID" jdbc-type="INTEGER"/>
>  <field-descriptor name="specId" primarykey="true" default-fetch="true" 
>  column="SPECIFICATION_ID" jdbc-type="INTEGER"/>
>  <field-descriptor name="value" nullable="false" default-fetch="true" 
>  column="VALUE" jdbc-type="VARCHAR"/>
>  <reference-descriptor name="product" 
>  class-ref="com.exigentic.onyx.Product" auto-update="false" 
>  auto-delete="false">
>  <foreignkey field-ref="id"/>
>  </reference-descriptor>
>  <reference-descriptor name="specType" 
>  class-ref="com.exigentic.onyx.SpecType" auto-update="false" 
>  auto-delete="false">
>  <foreignkey field-ref="id"/>
>  </reference-descriptor>
>  </class-descriptor>
>
>  <class-descriptor class="com.exigentic.onyx.ProductType" 
>  table="PRODUCT_TYPE">
>  <field-descriptor name="id" primarykey="true" default-fetch="true" 
>  autoincrement="true" sequence-name="type_seq'::text" column="TYPE_ID" 
>  jdbc-type="INTEGER"/>
>  <field-descriptor name="name" nullable="false" default-fetch="true" 
>  column="NAME" jdbc-type="VARCHAR"/>
>  <field-descriptor name="descr" default-fetch="true" column="DESCR" 
>  jdbc-type="VARCHAR"/>
>  <collection-descriptor name="productList" 
>  element-class-ref="com.exigentic.onyx.Product" auto-update="false" 
>  auto-delete="false">
>  <inverse-foreignkey field-ref="typeId"/>
>  </collection-descriptor>
>  </class-descriptor>
>
>  <class-descriptor class="com.exigentic.onyx.SpecType" 
>  table="SPECIFICATION_TYPE">
>  <field-descriptor name="id" primarykey="true" default-fetch="true" 
>  autoincrement="true" sequence-name="specification_seq'::text" 
>  column="SPECIFICATION_ID" jdbc-type="INTEGER"/>
>  <field-descriptor name="name" nullable="false" default-fetch="true" 
>  column="NAME" jdbc-type="VARCHAR"/>
>  <field-descriptor name="descr" default-fetch="true" column="DESCR" 
>  jdbc-type="VARCHAR"/>
>  <collection-descriptor name="specs" 
>  element-class-ref="com.exigentic.onyx.Specification" auto-update="false" 
>  auto-delete="false">
>  <inverse-foreignkey field-ref="specId"/>
>  </collection-descriptor>
>  </class-descriptor>
>  </descriptor-repository>
>
>
>  ---------------------------------------------------------------------
>  To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
>  For additional commands, e-mail: ojb-user-help@db.apache.org
>
>
>
>  ---
>  Outgoing mail is certified Virus Free.
>  Checked by AVG anti-virus system (http://www.grisoft.com).
>  Version: 6.0.577 / Virus Database: 366 - Release Date: 3/2/2004
>  
>

-- 
Larry V. Streepy, Jr.
Senior Vice President and CTO
Health Langugae, Inc.

Re: Help, I'm stuck and I can't get out! (Infinite Loop)

Posted by Edson Carlos Ericksson Richter <ed...@mgrinformatica.com.br>.
Exists some circustantes that results in infinite loop due to use of EmptyCache with two way navigable references. Are you using this? If yes, try to set a <object-cache> in the recerenced bean with a very low time-out (let's say, 1 sec). It solved almost vast majority of my cases.

Best regards,

Edson Richter

  ----- Original Message ----- 
  From: Clay Mitchell 
  To: OJB Users List 
  Sent: Saturday, February 07, 2004 2:16 PM
  Subject: Help, I'm stuck and I can't get out! (Infinite Loop)


  I seem to have gotten myself stuck in a infinite loop here...

  Any idea what it's doing and why?

  Thanks
  -Clay

  [org.apache.ojb.broker.core.QueryReferenceBroker] DEBUG: 
  getCollectionByQuery (class 
  org.apache.ojb.broker.util.collections.RemovalAwareCollection, class 
  com.exigentic.onyx.ProductType, Query from class 
  com.exigentic.onyx.ProductType where [id IN [79, 28, 112]])
  [org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement$TableAlias] 
  DEBUG: TableAlias(): using hints ? false

  [org.apache.ojb.broker.core.QueryReferenceBroker] DEBUG: 
  getCollectionByQuery (class 
  org.apache.ojb.broker.util.collections.RemovalAwareCollection, class 
  com.exigentic.onyx.Specification, Query from class 
  com.exigentic.onyx.Specification where [id IN [79, 28, 112]])
  [org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement$TableAlias] 
  DEBUG: TableAlias(): using hints ? false

  [org.apache.ojb.broker.core.QueryReferenceBroker] DEBUG: 
  getCollectionByQuery (class 
  org.apache.ojb.broker.util.collections.RemovalAwareCollection, class 
  com.exigentic.onyx.Product, Query from class com.exigentic.onyx.Product 
  where [id IN [79, 28, 112]])
  [org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement$TableAlias] 
  DEBUG: TableAlias(): using hints ? false

  [org.apache.ojb.broker.core.QueryReferenceBroker] DEBUG: 
  getCollectionByQuery (class 
  org.apache.ojb.broker.util.collections.RemovalAwareCollection, class 
  com.exigentic.onyx.SpecType, Query from class 
  com.exigentic.onyx.SpecType where [id IN [79, 28, 112]])
  [org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement$TableAlias] 
  DEBUG: TableAlias(): using hints ? false

  [org.apache.ojb.broker.core.QueryReferenceBroker] DEBUG: 
  getCollectionByQuery (class 
  org.apache.ojb.broker.util.collections.RemovalAwareCollection, class 
  com.exigentic.onyx.Specification, Query from class 
  com.exigentic.onyx.Specification where [specId = 28])
  [org.apache.ojb.broker.accesslayer.sql.SqlQueryStatement$TableAlias] 
  DEBUG: TableAlias(): using hints ? false


  ###### Here's my repository:

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

  <!DOCTYPE descriptor-repository PUBLIC "-//Apache Software 
  Foundation//DTD OJB Repository//EN" "repository.dtd">

  <descriptor-repository version="1.0" isolation-level="read-uncommitted">
  <jdbc-connection-descriptor jcd-alias="default" 
  default-connection="true" platform="PostgreSQL" jdbc-level="3.0" 
  driver="org.postgresql.Driver" protocol="jdbc" subprotocol="postgresql" 
  dbalias="//192.168.1.101:5432/onyx" username="postgres" 
  password="t30a6az8z" eager-release="false" batch-mode="false" 
  useAutoCommit="1" ignoreAutoCommitExceptions="false">
  <connection-pool maxActive="21" validationQuery=""/>
  <sequence-manager 
  className="org.apache.ojb.broker.util.sequence.SequenceManagerNextValImpl">
  <attribute attribute-name="autoNaming" attribute-value="true"/>
  </sequence-manager>
  </jdbc-connection-descriptor>
  <class-descriptor class="com.exigentic.onyx.Account" table="ACCOUNT">
  <field-descriptor name="id" primarykey="true" default-fetch="true" 
  autoincrement="true" sequence-name="account_seq'::text" 
  column="ACCOUNT_ID" jdbc-type="INTEGER"/>
  <field-descriptor name="email" nullable="false" default-fetch="true" 
  column="EMAIL" jdbc-type="VARCHAR"/>
  <field-descriptor name="password" nullable="false" 
  default-fetch="true" column="PASSWORD" jdbc-type="VARCHAR"/>
  <field-descriptor name="firstName" nullable="false" 
  default-fetch="true" column="NAME_FIRST" jdbc-type="VARCHAR"/>
  <field-descriptor name="lastName" nullable="false" 
  default-fetch="true" column="NAME_LAST" jdbc-type="VARCHAR"/>
  <field-descriptor name="company" default-fetch="true" column="COMPANY" 
  jdbc-type="VARCHAR"/>
  <field-descriptor name="phone" nullable="false" default-fetch="true" 
  column="PHONE" jdbc-type="VARCHAR"/>
  <field-descriptor name="fax" default-fetch="true" column="FAX" 
  jdbc-type="VARCHAR"/>
  <field-descriptor name="addr1" nullable="false" default-fetch="true" 
  column="ADDR_1" jdbc-type="VARCHAR"/>
  <field-descriptor name="addr2" default-fetch="true" column="ADDR_2" 
  jdbc-type="VARCHAR"/>
  <field-descriptor name="city" nullable="false" default-fetch="true" 
  column="CITY" jdbc-type="VARCHAR"/>
  <field-descriptor name="state" nullable="false" default-fetch="true" 
  column="STATE" jdbc-type="VARCHAR"/>
  <field-descriptor name="country" nullable="false" default-fetch="true" 
  column="COUNTRY" jdbc-type="VARCHAR"/>
  <field-descriptor name="zip" nullable="false" default-fetch="true" 
  column="ZIP" jdbc-type="VARCHAR"/>
  <field-descriptor name="security" nullable="false" 
  default-fetch="true" column="SECURITY" jdbc-type="INTEGER"/>
  <field-descriptor name="sourceDate" nullable="false" 
  default-fetch="true" column="SOURCE_DATE" jdbc-type="TIMESTAMP" 
  conversion="org.apache.ojb.broker.accesslayer.conversions.JavaDate2SqlTimestampFieldConversion"/>
  </class-descriptor>

  <class-descriptor class="com.exigentic.onyx.Option" table="OPTION">
  <field-descriptor name="id" primarykey="true" default-fetch="true" 
  autoincrement="true" sequence-name="option_seq'::text" 
  column="OPTION_ID" jdbc-type="INTEGER"/>
  <field-descriptor name="productId" nullable="false" 
  default-fetch="true" column="PRODUCT_ID" jdbc-type="INTEGER"/>
  <field-descriptor name="childId" nullable="false" default-fetch="true" 
  column="PRODUCT_OPTION" jdbc-type="INTEGER"/>
  </class-descriptor>

  <class-descriptor class="com.exigentic.onyx.Product" table="PRODUCT">
  <field-descriptor name="id" primarykey="true" default-fetch="true" 
  autoincrement="true" sequence-name="product_seq'::text" 
  column="PRODUCT_ID" jdbc-type="INTEGER"/>
  <field-descriptor name="typeId" nullable="false" default-fetch="true" 
  autoincrement="true" sequence-name="type_seq'::text" column="TYPE_ID" 
  jdbc-type="INTEGER"/>
  <field-descriptor name="code" nullable="false" default-fetch="true" 
  column="CODE" jdbc-type="VARCHAR"/>
  <field-descriptor name="name" nullable="false" default-fetch="true" 
  column="NAME" jdbc-type="VARCHAR"/>
  <field-descriptor name="descr" nullable="false" default-fetch="true" 
  column="DESCR" jdbc-type="VARCHAR"/>
  <field-descriptor name="option" nullable="false" default-fetch="true" 
  column="OPTION" jdbc-type="CHAR"/>
  <field-descriptor name="distributor" nullable="false" 
  default-fetch="true" column="DISTRIBUTOR" jdbc-type="CHAR"/>
  <field-descriptor name="distPrice" default-fetch="true" 
  column="DIST_PRICE" jdbc-type="DOUBLE"/>
  <field-descriptor name="listPrice" default-fetch="true" 
  column="LIST_PRICE" jdbc-type="DOUBLE"/>
  <field-descriptor name="highlight" default-fetch="true" 
  column="HIGHLIGHT" jdbc-type="CHAR"/>
  <reference-descriptor name="productType" 
  class-ref="com.exigentic.onyx.ProductType" auto-update="false" 
  auto-delete="false">
  <foreignkey field-ref="id"/>
  </reference-descriptor>
  <collection-descriptor name="specs" 
  element-class-ref="com.exigentic.onyx.Specification" auto-update="false" 
  auto-delete="false">
  <inverse-foreignkey field-ref="id"/>
  </collection-descriptor>
  </class-descriptor>

  <class-descriptor class="com.exigentic.onyx.Image" table="PRODUCT_IMAGE">
  <field-descriptor name="id" primarykey="true" default-fetch="true" 
  autoincrement="true" sequence-name="image_seq'::text" column="IMAGE_ID" 
  jdbc-type="INTEGER"/>
  <field-descriptor name="productId" default-fetch="true" 
  column="PRODUCT_ID" jdbc-type="INTEGER"/>
  <field-descriptor name="image" nullable="false" default-fetch="true" 
  column="IMAGE" jdbc-type="VARCHAR"/>
  <field-descriptor name="defaultImage" nullable="false" 
  default-fetch="true" column="DEFAULT_IMAGE" jdbc-type="CHAR"/>
  </class-descriptor>

  <class-descriptor class="com.exigentic.onyx.Specification" 
  table="PRODUCT_SPECIFICATION">
  <field-descriptor name="id" primarykey="true" default-fetch="true" 
  autoincrement="true" sequence-name="spec_seq'::text" column="SPEC_ID" 
  jdbc-type="INTEGER"/>
  <field-descriptor name="productId" primarykey="true" 
  default-fetch="true" column="PRODUCT_ID" jdbc-type="INTEGER"/>
  <field-descriptor name="specId" primarykey="true" default-fetch="true" 
  column="SPECIFICATION_ID" jdbc-type="INTEGER"/>
  <field-descriptor name="value" nullable="false" default-fetch="true" 
  column="VALUE" jdbc-type="VARCHAR"/>
  <reference-descriptor name="product" 
  class-ref="com.exigentic.onyx.Product" auto-update="false" 
  auto-delete="false">
  <foreignkey field-ref="id"/>
  </reference-descriptor>
  <reference-descriptor name="specType" 
  class-ref="com.exigentic.onyx.SpecType" auto-update="false" 
  auto-delete="false">
  <foreignkey field-ref="id"/>
  </reference-descriptor>
  </class-descriptor>

  <class-descriptor class="com.exigentic.onyx.ProductType" 
  table="PRODUCT_TYPE">
  <field-descriptor name="id" primarykey="true" default-fetch="true" 
  autoincrement="true" sequence-name="type_seq'::text" column="TYPE_ID" 
  jdbc-type="INTEGER"/>
  <field-descriptor name="name" nullable="false" default-fetch="true" 
  column="NAME" jdbc-type="VARCHAR"/>
  <field-descriptor name="descr" default-fetch="true" column="DESCR" 
  jdbc-type="VARCHAR"/>
  <collection-descriptor name="productList" 
  element-class-ref="com.exigentic.onyx.Product" auto-update="false" 
  auto-delete="false">
  <inverse-foreignkey field-ref="typeId"/>
  </collection-descriptor>
  </class-descriptor>

  <class-descriptor class="com.exigentic.onyx.SpecType" 
  table="SPECIFICATION_TYPE">
  <field-descriptor name="id" primarykey="true" default-fetch="true" 
  autoincrement="true" sequence-name="specification_seq'::text" 
  column="SPECIFICATION_ID" jdbc-type="INTEGER"/>
  <field-descriptor name="name" nullable="false" default-fetch="true" 
  column="NAME" jdbc-type="VARCHAR"/>
  <field-descriptor name="descr" default-fetch="true" column="DESCR" 
  jdbc-type="VARCHAR"/>
  <collection-descriptor name="specs" 
  element-class-ref="com.exigentic.onyx.Specification" auto-update="false" 
  auto-delete="false">
  <inverse-foreignkey field-ref="specId"/>
  </collection-descriptor>
  </class-descriptor>
  </descriptor-repository>


  ---------------------------------------------------------------------
  To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
  For additional commands, e-mail: ojb-user-help@db.apache.org



  ---
  Outgoing mail is certified Virus Free.
  Checked by AVG anti-virus system (http://www.grisoft.com).
  Version: 6.0.577 / Virus Database: 366 - Release Date: 3/2/2004