Hi, I am Using Container Managed Persistence with JBOSS, and I have a problem when i
try to insert a record on an ejb that its primary key makes reference to another EJB,
i've mapped the field as CMP, but when i set the ejb-relation the sql is corrupt....
I have the next database Model:
| IFX_PRICING
| ------------------------
| ID NOT NULL VARCHAR2(15) ---> pk
| CUSTOMER NUMBER(8)
| TOTAL NOT NULL NUMBER(25,13)
| CREATION_DATE NOT NULL DATE
|
| IFX_PRICINGSERVICE
| ---------------------------------
| PRICING NOT NULL VARCHAR2(15) -->PK FK from IFX_PRICING
| SERVICE NOT NULL NUMBER(3) -->PK
| TOTAL NOT NULL NUMBER(25,13)
Then I map the CMP Entity beans, i set the access Methods for PricingBean like:
// Access methods for relationship fields
public abstract Collection getPricingServices();
public abstract Collection getPricingServiceFeatures();
and I define my relations as:
<ejb-relation>
| <ejb-relation-name>Pricing-PricingService</ejb-relation-name>
| <ejb-relationship-role>
| <multiplicity>One</multiplicity>
| <relationship-role-source>
| <ejb-name>Pricing</ejb-name>
| </relationship-role-source>
| <cmr-field>
| <cmr-field-name>pricingServices</cmr-field-name>
| <cmr-field-type>java.util.Collection</cmr-field-type>
| </cmr-field>
| </ejb-relationship-role>
| <ejb-relationship-role>
| <multiplicity>Many</multiplicity>
| <relationship-role-source>
| <ejb-name>PricingService</ejb-name>
| </relationship-role-source>
| <cmr-field>
| <cmr-field-name>pricing</cmr-field-name>
| </cmr-field>
| </ejb-relationship-role>
| </ejb-relation>
First, If I don't define the <cmr-field-name>pricing</cmr-field-name> i get :
Could not create entity:java.sql.SQLException: ORA-00904: "PRICING_PRICINGSERVICES":
invalid identifier
Printing the sql script:
[org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.PricingService] Insert Entity
SQL: INSERT INTO IFX_PRICINGSERVICE (PRICING, SERVICE, TOTAL, Pricing_pricingServices)
VALUES (?, ?, ?, ?)
I don't understand why if I only want to define a unidirectional relation...
Second, If I set the field on my deployment descriptor (bidirectional), when I try to
insert a record on my PRICINGSERVICE EJB, i get :
Could not create entity:java.sql.SQLException: ORA-00957: duplicate column name
Printing the sql script:
[org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.PricingService] Insert Entity
SQL: INSERT INTO IFX_PRICINGSERVICE (PRICING, SERVICE, TOTAL, Pricing_pricingServices)
VALUES (?, ?, ?, ?)
I guess is for the pk, that is cmp and is defined as cmr too, when i define my
relationship, If i omit the ejb-relation I can insert a new record, but I need to get
all details of my pricingservices associated to my Pricing.... (I don't want to do it
with a select method)
someone answer me that i've just discovered why experts recomends not to use composite
primary key with ejb relations, but form me this is weird... because it would be
limiting the design..
View the original post :
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3844934#3844934
Reply to the post :
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3844934
-------------------------------------------------------
SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media
100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33
Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user