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: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> >> >> --- >> 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: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
