Thanks Armin, Please let us know when it is fixed. When is OJB 1.0.5 scheduled to be released?
Regards, Chris -----Original Message----- From: Armin Waibel [mailto:[EMAIL PROTECTED] Sent: Thursday, March 02, 2006 9:48 PM To: OJB Users List Subject: Re: OJB and the X-Files... :) Hi Chris, thanks much for detailed description. Yes, I can reproduce this issue with latest from OJB_1_0_RELEASE branch too (I checked in a test case: InheritanceMultipleTableTest#testLookupByIdentity_2()). You are right it's a bug. We will fix this ASAP. regards, Armin Christopher Lowe wrote: > Hi Armin, > > I've been able to successfully recreate this error with the > InheritanceMultipleTableTest Test cases. Again I'm using the broker API and > the latest code from SVN OJB_1_0_RELEASE. > > I added the code below to the test and like I described with my project when > org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl.LogLevel is > set to WARN it does not return the right class and when I set > org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl.LogLevel to > DEBUG it returns the right class. > > Employee employee = new Employee(); > employee.setId(newEx1.getId()); > employee.setId_2(newEx1.getId_2()); > > Identity employee_oid = broker.serviceIdentity().buildIdentity(employee); > Employee employee1 = (Employee) broker.getObjectByIdentity(employee_oid); > > log.debug("Employee: " + employee1); > > assertEquals(Executive.class.getName(), employee1.getClass().getName()); > > Please note that when I test this with the latest release of OJB, > db-ojb-1.0.4.jar, this works fine. This indicates one of two things. Either > I'm downloading and building the code from OJB_1_0_RELEASE incorrectly or a > bug was introduced into the OJB_1_0_RELEASE code. Please look into this and > advise me further, thank you. > > Regards, > Chris > > -----Original Message----- > From: Armin Waibel [mailto:[EMAIL PROTECTED] > Sent: Tuesday, February 28, 2006 12:39 PM > To: OJB Users List > Subject: Re: OJB and the X-Files... :) > > Hi Chris, > > Christopher Lowe wrote: >> Hi Armin, >> >> I'm not using p6spy, but I removed all p6spy *.jars and *.properties >> files and still the same result. > > Now I'm stumped. If it is reproducible in a separate test, please add a > issue in JIRA (with detailed pseudo code or a test case). > > >> I'm going to have to dissect this portion >> of my project and see if it can figure it out, this is really nagging me. > I >> will let you know. >> > > It would be really helpful if you can reproduce this behavior with a > simple test case. > > regards, > Armin > > >> Regards, >> Chris. >> >> -----Original Message----- >> From: Armin Waibel [mailto:[EMAIL PROTECTED] >> Sent: Monday, February 27, 2006 10:55 PM >> To: OJB Users List >> Subject: Re: OJB and the X-Files... :) >> >> Hi Christopher, >> >> Christopher Lowe wrote: >>> Hi Armin, >>> >>> Thanks for the tip about building the identity objects. I do agree that > my >>> problem sounds similar to OJB-63. I'm using code downloaded from the SVN >>> OJB_1_0_RELEASE branch as of 23rd of this month. Like what is described > in >>> OJB-63 when I have >>> > org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl.LogLevel=DEBUG >>> I can see the correct sql being generated with the "clazz_" column in the >>> ResultSet and hence the correct class is created. However when I turn >>> debugging off for this class, i.e I set it to >>> > org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl.LogLevel=WARN, >>> the super class is generated. I tried changing the loglevel for the other >>> jdbc access querying and object materialization class entries in the >>> OJB-logging.properties file and only setting the loglevel to DEBUG for >>> SqlGeneratorDefaultImpl works. This is rather strange to me. >> This is strange for me too. Did you enable p6spy while executing the >> Query? If yes, please run your test again without p6spy. >> >> regards, >> Armin >> >>> Please advice, >>> thank you. >>> >>> Regards, >>> Chris >>> >>> -----Original Message----- >>> From: Armin Waibel [mailto:[EMAIL PROTECTED] >>> Sent: Friday, February 24, 2006 10:20 PM >>> To: OJB Users List >>> Subject: Re: OJB and the X-Files... :) >>> >>> Hi Chris, >>> >>> Christopher Lowe wrote: >>>> Dear All, >>>> >>>> I have a simple inheritance relationship between a Special and >>>> ActivitySpecial. I'm using proxies throughout my project with the cglib >>>> proxy factory and indirection handler (I'm also using the broker API). >> I'm >>>> performing a simple query to find an activity special as follows: >>>> >>>> Special special = (Special) broker.getObjectByIdentity(new Identity(new >>>> Special(24), broker)); >>>> log.debug("Special: " + special); >>>> >>> It's recommended to use the service class IdentityFactory to build the >>> Identity and lookup persistent objects. >>> > http://db.apache.org/ojb/docu/tutorials/pb-tutorial.html#Find+object+by+prim >>> ary+key >>> >>> >>>> Now here is the catch. When I set >>>> > org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl.LogLevel=DEBUG >>>> in the OJB-logging.properties file everything works fine. The correct >>> object >>>> is materialized and when the debug statement is printed out the correct >>>> class ActivitySpecial is present. However when I set >>>> > org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl.LogLevel=WARN >>>> the object that is materialized is Special. This is really weird >> behavior. >>>> Does anyone have an idea why this would occur? >>> this sounds like OJB-63 >>> https://issues.apache.org/jira/browse/OJB-63 >>> >>> and was fixed for OJB 1.0.4. Do you use the latest version of OJB? >>> >>> regards, >>> Armin >>> >>> >>>> I've included the mappings >>>> for the classes mentioned above as well as the entries I have for my >>>> database repository. >>>> >>>> Mappings: >>>> >>>> <class-descriptor class="com.dm.beans.Special" table="special"> >>>> <field-descriptor name="id" column="ID" jdbc-type="INTEGER" >>>> primarykey="true" nullable="false" autoincrement="true"/> >>>> <field-descriptor name="supplierId" column="SUPPLIER_ID" >>>> jdbc-type="INTEGER" /> >>>> <field-descriptor name="name" column="NAME" jdbc-type="VARCHAR" /> >>>> <field-descriptor name="ackOptLock" column="ACK_OPT_LOCK" >>>> jdbc-type="BIGINT" locking="true"/> >>>> <reference-descriptor >>>> name="supplier" >>>> class-ref="com.dm.beans.suppliers.Supplier" >>>> proxy="true" >>>> auto-update="link" >>>> auto-delete="none" >>>> > >>>> <foreignkey field-ref="supplierId"/> >>>> </reference-descriptor> >>>> <collection-descriptor >>>> name="products" >>>> >>>> >> collection-class="org.apache.ojb.broker.util.collections.RemovalAwareList" >>>> element-class-ref="com.dm.beans.Product" >>>> auto-update="link" >>>> auto-delete="link" >>>> proxy="true" >>>> indirection-table="product_special" >>>> > >>>> <fk-pointing-to-this-class column="SPECIAL_ID"/> >>>> <fk-pointing-to-element-class column="PRODUCT_ID"/> >>>> </collection-descriptor> >>>> </class-descriptor> >>>> >>>> <class-descriptor class="com.dm.beans.activity.ActivitySpecial" >>>> table="activity_special"> >>>> <field-descriptor name="id" column="ID" jdbc-type="INTEGER" >>>> primarykey="true" nullable="false"/> >>>> <field-descriptor name="minPersons" column="MIN_PERSONS" >>>> jdbc-type="INTEGER" /> >>>> <field-descriptor name="maxPersons" column="MAX_PERSONS" >>>> jdbc-type="INTEGER" /> >>>> <field-descriptor name="discount" column="DISCOUNT" >>> jdbc-type="VARCHAR" >>>> /> >>>> <reference-descriptor >>>> name="super" >>>> class-ref="com.dm.beans.Special" >>>> > >>>> <foreignkey field-ref="id"/> >>>> </reference-descriptor> >>>> </class-descriptor> >>>> >>>> Database Repository Settings: >>>> >>>> <jdbc-connection-descriptor >>>> jcd-alias="dataSource" >>>> default-connection="true" >>>> platform="MySQL" >>>> jdbc-level="3.0" >>>> useAutoCommit="1" >>>> eager-release="false" >>>> batch-mode="false" >>>> jndi-datasource-name="java:comp/env/jdbc/DestinationDB" >>>> ignoreAutoCommitExceptions="false"> >>>> >>>> <!-- alternative cache implementations, see docs section >> "Caching" >>>> --> >>>> <object-cache >>>> class="org.apache.ojb.broker.cache.ObjectCacheTwoLevelImpl"> >>>> <!-- meaning of attributes, please see docs section > "Caching" >>>> --> >>>> <!-- common attributes --> >>>> <attribute attribute-name="cacheExcludes" >> attribute-value=""/> >>>> >>>> <!-- ObjectCacheTwoLevelImpl attributes --> >>>> <attribute attribute-name="applicationCache" >>>> attribute-value="org.apache.ojb.broker.cache.ObjectCacheOSCacheImpl"/> >>>> <attribute attribute-name="copyStrategy" >>>> > attribute-value="org.apache.ojb.broker.cache.ObjectCacheTwoLevelImpl$CopyStr >>>> ategyImpl"/> >>>> <attribute attribute-name="forceProxies" >>>> attribute-value="false"/> >>>> >>>> <!-- ObjectCacheDefaultImpl attributes --> >>>> <attribute attribute-name="timeout" attribute-value="900"/> >>>> <attribute attribute-name="autoSync" > attribute-value="true"/> >>>> <attribute attribute-name="cachingKeyType" >>> attribute-value="0"/> >>>> <attribute attribute-name="useSoftReferences" >>>> attribute-value="true"/> >>>> </object-cache> >>>> >>>> <!-- For more info, see section "Connection Handling" in docs > --> >>>> <connection-pool >>>> maxActive="30" >>>> validationQuery="select 1 from supplier_type;" >>>> testOnBorrow="true" >>>> testOnReturn="false" >>>> whenExhaustedAction="0" >>>> maxWait="10000"> >>>> >>>> <!-- Set fetchSize to 0 to use driver's default. --> >>>> <attribute attribute-name="fetchSize" attribute-value="0"/> >>>> >>>> <!-- Attributes with name prefix "jdbc." are passed directly >>> to >>>> the JDBC driver. --> >>>> <!-- Example setting (used by Oracle driver when Statement >>>> batching is enabled) --> >>>> <attribute attribute-name="jdbc.defaultBatchValue" >>>> attribute-value="5"/> >>>> >>>> <!-- Attributes determining if ConnectionFactoryDBCPImpl >>>> should also pool PreparedStatement. This is >>>> programmatically disabled >>>> when using platform=Oracle9i since Oracle statement >>> caching >>>> will conflict >>>> with DBCP ObjectPool-based PreparepdStatement caching >> (ie >>>> setting true >>>> here has no effect for Oracle9i platform). --> >>>> <attribute attribute-name="dbcp.poolPreparedStatements" >>>> attribute-value="false"/> >>>> <attribute attribute-name="dbcp.maxOpenPreparedStatements" >>>> attribute-value="10"/> >>>> <!-- Attribute determining if the Commons DBCP connection >>>> wrapper will allow >>>> access to the underlying concrete Connection instance >>> from >>>> the JDBC-driver >>>> (normally this is not allowed, like in J2EE-containers >>>> using wrappers). --> >>>> <attribute >>>> attribute-name="dbcp.accessToUnderlyingConnectionAllowed" >>>> attribute-value="false"/> >>>> </connection-pool> >>>> >>>> <!-- alternative sequence manager implementations, see "Sequence >>>> Manager" guide --> >>>> <sequence-manager >>>> > className="org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl"> >>>> <!-- attributes supported by SequenceManagerHighLowImpl, >>>> SequenceManagerInMemoryImpl, SequenceManagerNextValImpl >>>> please see "Sequence Manager" guide or/and javadoc of class >>> for >>>> more information --> >>>> <attribute attribute-name="seq.start" attribute-value="1"/> >>>> <attribute attribute-name="autoNaming" >>> attribute-value="true"/> >>>> >>>> <!-- attributes supported by SequenceManagerHighLowImpl >>>> please see "Sequence Manager" guide or/and javadoc of > classes >>>> for more information --> >>>> <attribute attribute-name="grabSize" attribute-value="1"/> >>>> >>>> <!-- optional attributes supported by >>> SequenceManagerNextValImpl >>>> (support depends >>>> on the used database), please see "Sequence Manager" guide >>>> or/and javadoc of >>>> classes for more information --> >>>> <!-- attribute attribute-name="seq.as" >>>> attribute-value="INTEGER"/ --> >>>> <!-- attribute attribute-name="seq.incrementBy" >>>> attribute-value="1"/ --> >>>> <!-- attribute attribute-name="seq.maxValue" >>>> attribute-value="999999999999999999999999999"/ --> >>>> <!-- attribute attribute-name="seq.minValue" >>>> attribute-value="1"/ --> >>>> <!-- attribute attribute-name="seq.cycle" >>>> attribute-value="false"/ --> >>>> <!-- attribute attribute-name="seq.cache" >>> attribute-value="20"/ >>>> --> >>>> <!-- attribute attribute-name="seq.order" >>>> attribute-value="false"/ --> >>>> >>>> </sequence-manager> >>>> >>>> Regards, >>>> Chris >>>> >>>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>> For additional commands, e-mail: [EMAIL PROTECTED] >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>> For additional commands, e-mail: [EMAIL PROTECTED] >>> >>> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]