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]

Reply via email to