Hi Stephan,

hmm, how does your mapping for
demo.myshop.model.ojb2.Supplier
look like (nothing changed from your first post)?

From your first post

>>  <class-descriptor
>>        class="demo.myshop.model.ojb2.Supplier"
>>        table="OJB_SUPPLIER">
>>        <field-descriptor
>>                name="fk_bpid"
>>                column="FK_BPID"
>>                jdbc-type="INTEGER"
>>                primarykey="true"

Why you set primarykey 'true' for this anonymous field?

>>                autoincrement="false"
>>                access="anonymous"/>
>>                
>>        <field-descriptor
>>                name="shippingCost"
>>                column="SHIPPINGCOST"
>>                jdbc-type="INTEGER"/>
>>        
>>        <reference-descriptor
>>                name="businessPartner"
>>                class-ref="demo.myshop.model.ojb2.BusinessPartner">
>>                <foreignkey field-ref="fk_bpid"/>
>>        </reference-descriptor>
>>        
>>        <collection-descriptor
>>                name="items"
>>                element-class-ref="demo.myshop.model.ojb2.SellableItem"
>>                auto-retrieve="true"
>>                auto-update="true"
>>                indirection-table="OJB_SUPPLIER_ITEM">
>>                <fk-pointing-to-this-class column="SUPPLIERID"/>

Can't see a field-descriptor with SUPPLIERID column in this class-descriptor.

>>                <fk-pointing-to-element-class column="ITEMID"/>
>>      </collection-descriptor>
>>
>>  </class-descriptor>

regards,
Armin

Stephan Wannenwetsch wrote:
Hi Armin,

I checked it but nothing changed. I also removed all data from the DB-tables but nothing changed, too.

Thanks,
Stephan

-----Original Message-----
From: Armin Waibel [mailto:[EMAIL PROTECTED] Sent: Monday, December 15, 2003 6:03 PM
To: OJB Users List
Subject: Re: Mapping problem



Hi,


maybe sequence-name "algorithm" had problems. Try to remove related row in OJB_HL_SEQ table (name of the first found extent class table name). You can do a quick check using SequenceManagerInMemoryImpl in your test. If your test pass, it's a H/L sequence manager problem.

regards,
Armin

Stephan Wannenwetsch wrote:

Hi Wally,

I'm using the following sequence-manager:

<sequence-manager className="org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl">
<attribute attribute-name="grabSize" attribute-value="20"/>
<attribute attribute-name="autoNaming" attribute-value="true"/>
<attribute attribute-name="globalSequenceId" attribute-value="false"/>
<attribute attribute-name="globalSequenceStart" attribute-value="10000"/> </sequence-manager>


Stephan


-----Original Message----- From: Gelhar, Wallace Joseph [mailto:[EMAIL PROTECTED] Sent: Monday, December 15, 2003 5:35 PM To: OJB Users List Subject: RE: Mapping problem


Hi Stephan,


Sounds like a sequence manager configuration problem. A PK must be unique within an extent hierarchy, so you cannot use an IDENTITY column for a PK. What sequence manager are you using?

Wally



-----Original Message-----
From: Stephan Wannenwetsch [mailto:[EMAIL PROTECTED]
Sent: Monday, December 15, 2003 10:16 AM
To: OJB Users List
Subject: RE: Mapping problem


Hallo Wally,


I've changed the mapping into:
 <class-descriptor class="demo.myshop.model.ojb2.SellableItem">
        <extent-class class-ref="demo.myshop.model.ojb2.ServiceContract" />
        <extent-class class-ref="demo.myshop.model.ojb2.Product" />
 </class-descriptor>

 <class-descriptor
        class="demo.myshop.model.ojb2.ServiceContract"
        table="OJB_SELLABLEITEM">
                
        <field-descriptor
                name="itemId"
                column="ITEMID"
                jdbc-type="INTEGER"
                primarykey="true"
                autoincrement="true"/>     
                
        <field-descriptor
                name="ojbConcreteClass"
                column="CLASS_NAME"
                jdbc-type="VARCHAR"/>
                
        <field-descriptor
                name="description"
                column="DESCRIPTION"
                jdbc-type="VARCHAR"/>
        
        <field-descriptor
                name="price"
                column="PRICE"
                jdbc-type="INTEGER"/>
        
        <field-descriptor
                name="period"
                column="PERIOD"
                jdbc-type="INTEGER"/>

<collection-descriptor
name="suppliers"
element-class-ref="demo.myshop.model.ojb2.Supplier"
auto-retrieve="true"
auto-update="true"
indirection-table="OJB_SUPPLIER_ITEM">
<fk-pointing-to-this-class column="ITEMID"/>
<fk-pointing-to-element-class column="SUPPLIERID"/>
</collection-descriptor>
</class-descriptor>
<class-descriptor
class="demo.myshop.model.ojb2.Product"
table="OJB_SELLABLEITEM">

<field-descriptor
name="itemId"
column="ITEMID"
jdbc-type="INTEGER"
primarykey="true"
autoincrement="true"/>

<field-descriptor
name="ojbConcreteClass"
column="CLASS_NAME"
jdbc-type="VARCHAR"/>

<field-descriptor
name="description"
column="DESCRIPTION"
jdbc-type="VARCHAR"/>

<field-descriptor
name="price"
column="PRICE"
jdbc-type="INTEGER"/>

<field-descriptor
name="weight"
column="WEIGHT"
jdbc-type="INTEGER"/>
<collection-descriptor
name="suppliers"
element-class-ref="demo.myshop.model.ojb2.Supplier"
auto-retrieve="true"
auto-update="true"
indirection-table="OJB_SUPPLIER_ITEM">
<fk-pointing-to-this-class column="ITEMID"/>
<fk-pointing-to-element-class column="SUPPLIERID"/>
</collection-descriptor>
</class-descriptor>




But now I get an error when I store a supplier (primary key - error, pk not unique in OJB_SUPPLIER_ITEM, can't insert). Transaction started


[org.apache.ojb.broker.accesslayer.JdbcAccessImpl] ERROR: SQLException during the execution of the Update SQL query (for a demo.myshop.model.ojb2.Supplier): [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]Verletzung der PRIMARY KEY-Einschr�nkung 'PK_OJB_SUPPLIER_ITEM'. Ein doppelter Schl�ssel kann in das OJB_SUPPLIER_ITEM-Objekt nicht eingef�gt werden. [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]Verletzung der PRIMARY KEY-Einschr�nkung 'PK_OJB_SUPPLIER_ITEM'. Ein doppelter Schl�ssel kann

i n das OJB_SUPPLIER_ITEM-Objekt nicht eingef�gt werden.


java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]Verletzung der PRIMARY KEY-Einschr�nkung 'PK_OJB_SUPPLIER_ITEM'. Ein doppelter Schl�ssel kann in das OJB_SUPPLIER_ITEM-Objekt nicht eingef�gt werden.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)


Some more ideas ???

Thanks,
Stephan








-----Original Message----- From: Gelhar, Wallace Joseph [mailto:[EMAIL PROTECTED] Sent: Monday, December 15, 2003 3:44 PM To: OJB Users List Subject: RE: Mapping problem


Hi Stephan,


OJB does not support class descriptor inheritance for <extent-class> elements. Try moving your "common" fields from Sellable item into each of the concrete class descriptors and making Sellable item non-concrete (it is only an interface after all) such as:

<class-descriptor class="demo.myshop.model.ojb2.SellableItem" >
<extent-class class-ref="demo.myshop.model.ojb2.ServiceContract"
/>
<extent-class class-ref="demo.myshop.model.ojb2.Product" /> </class-descriptor>


Hope this helps.

Wally

-----Original Message-----
From: Stephan Wannenwetsch [mailto:[EMAIL PROTECTED]
Sent: Monday, December 15, 2003 4:16 AM
To: [EMAIL PROTECTED]
Subject: Mapping problem


Hallo,


I've got a problem retrieving objects from a m:n relationship:

Object model:

class Supplier;
=>Collection items;

Interface SellableItem;
=>Collection suppliers;

class Product implements SellableItem;
=> Collection suppliers;

class ServiceContract implements SellableItem;
=> Collection suppliers;

Of course there are some more attributes in each class with the corresponding getter and setters.

I use an itermediate table OJB_SUPPLIER_ITEM to realise the m:n relationship.

Every thing works fine coming from the supplier side and retriving the related items of a supplier but I'm not able to retrieve the related suppliers of an item.

I hope someone can help me.

Thanks,
Stephan

Mapping:

<class-descriptor
class="demo.myshop.model.ojb2.Supplier"
table="OJB_SUPPLIER">
<field-descriptor
name="fk_bpid"
column="FK_BPID"
jdbc-type="INTEGER"
primarykey="true"
autoincrement="false"
access="anonymous"/>

<field-descriptor
name="shippingCost"
column="SHIPPINGCOST"
jdbc-type="INTEGER"/>

<reference-descriptor
name="businessPartner"
class-ref="demo.myshop.model.ojb2.BusinessPartner">
<foreignkey field-ref="fk_bpid"/>
</reference-descriptor>

<collection-descriptor
name="items"
element-class-ref="demo.myshop.model.ojb2.SellableItem"
auto-retrieve="true"
auto-update="true"
indirection-table="OJB_SUPPLIER_ITEM">
<fk-pointing-to-this-class column="SUPPLIERID"/>
<fk-pointing-to-element-class column="ITEMID"/>
</collection-descriptor>
</class-descriptor>


 <class-descriptor
        class="demo.myshop.model.ojb2.SellableItem"
        table="OJB_SELLABLEITEM">
        
        <extent-class class-ref="demo.myshop.model.ojb2.ServiceContract"
/>
        <extent-class class-ref="demo.myshop.model.ojb2.Product" />
        
        <field-descriptor
                name="itemId"
                column="ITEMID"
                jdbc-type="INTEGER"
                primarykey="true"
                autoincrement="true"/>     
                
        <field-descriptor
                name="ojbConcreteClass"
                column="CLASS_NAME"
                jdbc-type="VARCHAR"/>
                
        <field-descriptor
                name="description"
                column="DESCRIPTION"
                jdbc-type="VARCHAR"/>
        
        <field-descriptor
                name="price"
                column="PRICE"
                jdbc-type="INTEGER"/>
        
        <collection-descriptor
                name="suppliers"
                element-class-ref="demo.myshop.model.ojb2.Supplier"
                auto-retrieve="true"
                auto-update="true"
                indirection-table="OJB_SUPPLIER_ITEM">
                <fk-pointing-to-this-class column="ITEMID"/>
                <fk-pointing-to-element-class column="SUPPLIERID"/>
     </collection-descriptor>
  </class-descriptor>

<class-descriptor
class="demo.myshop.model.ojb2.ServiceContract"
table="OJB_SELLABLEITEM">

<field-descriptor
name="itemId"
column="ITEMID"
jdbc-type="INTEGER"
primarykey="true"
autoincrement="true"/>

<field-descriptor
name="ojbConcreteClass"
column="CLASS_NAME"
jdbc-type="VARCHAR"/>

<field-descriptor
name="description"
column="DESCRIPTION"
jdbc-type="VARCHAR"/>

<field-descriptor
name="price"
column="PRICE"
jdbc-type="INTEGER"/>

<field-descriptor
name="period"
column="PERIOD"
jdbc-type="INTEGER"/>
</class-descriptor>
<class-descriptor
class="demo.myshop.model.ojb2.Product"
table="OJB_SELLABLEITEM">

<field-descriptor
name="itemId"
column="ITEMID"
jdbc-type="INTEGER"
primarykey="true"
autoincrement="true"/>

<field-descriptor
name="ojbConcreteClass"
column="CLASS_NAME"
jdbc-type="VARCHAR"/>

<field-descriptor
name="description"
column="DESCRIPTION"
jdbc-type="VARCHAR"/>

<field-descriptor
name="price"
column="PRICE"
jdbc-type="INTEGER"/>

<field-descriptor
name="weight"
column="WEIGHT"
jdbc-type="INTEGER"/>
</class-descriptor>


---------------------------------------------------------------------
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]



Reply via email to