Hi--

Well, I added the auto-increment tag to jbosscmp-jdbc.xml, and the null
primary key exception is still thrown:

2003-12-03 13:48:18,261 ERROR [org.jboss.ejb.plugins.LogInterceptor]
TransactionRolledbackLocalException in method: public abstract void
homebrew.ejb.interfaces.accountHolderBeanLocal.setaccountHolderBeanValue(hom
ebrew.ejb.interfaces.accountHolderBeanValue), causedBy:
javax.ejb.CreateException: Primary key for created instance is null.
        at
org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.createEntity(JDBCStoreManage
r.java:520)
        at
org.jboss.ejb.plugins.CMPPersistenceManager.createEntity(CMPPersistenceManag
er.java:208)
        at
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.createEntit
y(CachedConnectionInterceptor.java:269)
        at
org.jboss.ejb.EntityContainer.createLocalHome(EntityContainer.java:580)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39
)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at
org.jboss.ejb.EntityContainer$ContainerInterceptor.invokeHome(EntityContaine
r.java:1042)
        at
org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractInterceptor.jav
a:88)
        at
org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invokeHome(EntitySync
hronizationInterceptor.java:197)
        at
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invokeHome(
CachedConnectionInterceptor.java:214)
        at
org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractInterceptor.jav
a:88)
        at
org.jboss.ejb.plugins.EntityInstanceInterceptor.invokeHome(EntityInstanceInt
erceptor.java:89)
        at
org.jboss.ejb.plugins.EntityLockInterceptor.invokeHome(EntityLockInterceptor
.java:61)
        at
org.jboss.ejb.plugins.EntityCreationInterceptor.invokeHome(EntityCreationInt
erceptor.java:28)
        at
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor
.java:88)
        at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.
java:267)
        at
org.jboss.ejb.plugins.TxInterceptorCMT.invokeHome(TxInterceptorCMT.java:98)
        at
org.jboss.ejb.plugins.SecurityInterceptor.invokeHome(SecurityInterceptor.jav
a:92)
        at
org.jboss.ejb.plugins.LogInterceptor.invokeHome(LogInterceptor.java:120)
        at
org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invokeHome(ProxyFactoryF
inderInterceptor.java:93)
        at
org.jboss.ejb.EntityContainer.internalInvokeHome(EntityContainer.java:484)
        at org.jboss.ejb.Container.invoke(Container.java:720)
        at
org.jboss.ejb.plugins.local.BaseLocalProxyFactory.invokeHome(BaseLocalProxyF
actory.java:293)
        at
org.jboss.ejb.plugins.local.LocalHomeProxy.invoke(LocalHomeProxy.java:110)
        at $Proxy36.create(Unknown Source)
        at
homebrew.ejb.entity.accountHolderBeanCMP.addAcctRecipe(accountHolderBeanCMP.
java:167)
        at
homebrew.ejb.entity.accountHolderBeanCMP.setaccountHolderBeanValue(accountHo
lderBeanCMP.java:302)

Here is the new jbosscmp-jdbc.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jbosscmp-jdbc PUBLIC "-//JBoss//DTD JBOSSCMP-JDBC 3.2//EN"
"http://www.jboss.org/j2ee/dtd/jbosscmp-jdbc_3_2.dtd";>

<jbosscmp-jdbc>
   <defaults>
     <datasource>java:/DefaultDS</datasource>
     <datasource-mapping>Hypersonic SQL</datasource-mapping>
   </defaults>

   <enterprise-beans>

     <!--
       To add beans that you have deployment descriptor info for, add
       a file to your XDoclet merge directory called jbosscmp-jdbc-beans.xml
       that contains the <entity></entity> markup for those beans.
     -->

      <entity>
         <ejb-name>AccountRecipeBean</ejb-name>
         <table-name>recipe</table-name>

         <cmp-field>
            <field-name>recipeId</field-name>
            <column-name>recipe_id</column-name>

                        <auto-increment/>
        </cmp-field>
         <cmp-field>
            <field-name>accountId</field-name>
            <column-name>account_id</column-name>

        </cmp-field>
         <cmp-field>
            <field-name>recipeName</field-name>
            <column-name>recipe_name</column-name>

        </cmp-field>

        <entity-command name="hsqldb-fetch-key">
        </entity-command>
<!-- jboss 3.2 features -->
<!-- optimistic locking does not express the exclusions needed -->
      </entity>

      <entity>
         <ejb-name>RecipeHopsBean</ejb-name>
                 <datasource>java:/DefaultDS</datasource>
                 <datasource-mapping>Hypersonic SQL</datasource-mapping>
         <table-name>recipe_hops</table-name>

         <cmp-field>
            <field-name>recipeHopId</field-name>
            <column-name>recipe_hop_id</column-name>

        </cmp-field>
         <cmp-field>
            <field-name>recipeId</field-name>
            <column-name>recipe_id</column-name>

        </cmp-field>
         <cmp-field>
            <field-name>hopsRefId</field-name>
            <column-name>ref_recipe_hops_id</column-name>

        </cmp-field>
         <cmp-field>
            <field-name>hopForm</field-name>
            <column-name>hop_form</column-name>

        </cmp-field>

        <entity-command name="hsqldb-fetch-key">
        </entity-command>
<!-- jboss 3.2 features -->
<!-- optimistic locking does not express the exclusions needed -->
      </entity>

      <entity>
         <ejb-name>accountAddressBean</ejb-name>
         <table-name>account_address</table-name>

         <cmp-field>
            <field-name>accountId</field-name>
            <column-name>account_id</column-name>

        </cmp-field>
         <cmp-field>
            <field-name>addressType</field-name>
            <column-name>address_type</column-name>

        </cmp-field>
         <cmp-field>
            <field-name>streetNumber</field-name>
            <column-name>str_num</column-name>

        </cmp-field>
         <cmp-field>
            <field-name>streetName</field-name>
            <column-name>str_name</column-name>

        </cmp-field>
         <cmp-field>
            <field-name>streetSuffix</field-name>
            <column-name>str_suffix</column-name>

        </cmp-field>
         <cmp-field>
            <field-name>city</field-name>
            <column-name>city</column-name>

        </cmp-field>
         <cmp-field>
            <field-name>state</field-name>
            <column-name>state</column-name>

        </cmp-field>
         <cmp-field>
            <field-name>zipCode</field-name>
            <column-name>zip</column-name>

        </cmp-field>
         <cmp-field>
            <field-name>zip4</field-name>
            <column-name>zip4</column-name>

        </cmp-field>
         <cmp-field>
            <field-name>primaryAddress</field-name>
            <column-name>primary_address</column-name>

        </cmp-field>
         <cmp-field>
            <field-name>billingAddress</field-name>
            <column-name>billing_address</column-name>

        </cmp-field>

<!-- jboss 3.2 features -->
<!-- optimistic locking does not express the exclusions needed -->
      </entity>

      <entity>
         <ejb-name>accountHolderBean</ejb-name>
         <table-name>account</table-name>

         <cmp-field>
            <field-name>accountId</field-name>
            <column-name>account_id</column-name>

                        <auto-increment/>
        </cmp-field>
         <cmp-field>
            <field-name>accountRoleId</field-name>
            <column-name>account_role_id</column-name>

        </cmp-field>
         <cmp-field>
            <field-name>emailAddress</field-name>
            <column-name>email_address</column-name>

        </cmp-field>
         <cmp-field>
            <field-name>emailTypeCd</field-name>
            <column-name>email_type_cd</column-name>

        </cmp-field>
         <cmp-field>
            <field-name>accountPassword</field-name>
            <column-name>account_password</column-name>

        </cmp-field>
         <cmp-field>
            <field-name>firstName</field-name>
            <column-name>first_name</column-name>

        </cmp-field>
         <cmp-field>
            <field-name>SSN</field-name>
            <column-name>ssn</column-name>

        </cmp-field>

        <entity-command name="hsqldb-fetch-key">
        </entity-command>
<!-- jboss 3.2 features -->
<!-- optimistic locking does not express the exclusions needed -->
      </entity>

   </enterprise-beans>

  <relationships>
    <ejb-relation>
      <ejb-relation-name>Account-Recipe</ejb-relation-name>

      <ejb-relationship-role>
 
<ejb-relationship-role-name>Recipe-Belongs-To-Account</ejb-relationship-role
-name>
                  <key-fields/>

      </ejb-relationship-role>
      <ejb-relationship-role>
 
<ejb-relationship-role-name>Account-Has-Recipes</ejb-relationship-role-name>
          <key-fields>
             <key-field>
               <field-name>accountId</field-name>
               <column-name>account_id</column-name>
             </key-field>
          </key-fields>

      </ejb-relationship-role>
    </ejb-relation>
    <ejb-relation>
      <ejb-relation-name>Recipe-Hops</ejb-relation-name>

      <ejb-relationship-role>
 
<ejb-relationship-role-name>Recipe-Has-Hops</ejb-relationship-role-name>
          <key-fields>
             <key-field>
               <field-name>recipeId</field-name>
               <column-name>recipe_id</column-name>
             </key-field>
          </key-fields>

      </ejb-relationship-role>
      <ejb-relationship-role>
 
<ejb-relationship-role-name>Hops-Belongs-To-Recipe</ejb-relationship-role-na
me>
                  <key-fields/>

      </ejb-relationship-role>
    </ejb-relation>
    <ejb-relation>
      <ejb-relation-name>Account-Address</ejb-relation-name>

      <ejb-relationship-role>
 
<ejb-relationship-role-name>Account-Has-Addresses</ejb-relationship-role-nam
e>
          <key-fields>
             <key-field>
               <field-name>accountId</field-name>
               <column-name>account_id</column-name>
             </key-field>
          </key-fields>

      </ejb-relationship-role>
      <ejb-relationship-role>
 
<ejb-relationship-role-name>Address-Belongs-To-Account</ejb-relationship-rol
e-name>
                  <key-fields/>

      </ejb-relationship-role>
    </ejb-relation>
  </relationships>

</jbosscmp-jdbc>

Any other ideas?

Regards,
Matt Hanson

-----Original Message-----
From: Alexey Loubyansky [mailto:[EMAIL PROTECTED]
Sent: Wednesday, December 03, 2003 10:52 AM
To: [EMAIL PROTECTED]
Subject: Re: [JBoss-user] Container Responsibility for CMR Foreign Keys


The auto incremented/generated field should have <auto-increment/> in 
jbosscmp-jdbc.xml



-------------------------------------------------------
This SF.net email is sponsored by OSDN's Audience Survey.
Help shape OSDN's sites and tell us what you think. Take this
five minute survey and you could win a $250 Gift Certificate.
http://www.wrgsurveys.com/2003/osdntech03.php?site=8
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user


-------------------------------------------------------
This SF.net email is sponsored by OSDN's Audience Survey.
Help shape OSDN's sites and tell us what you think. Take this
five minute survey and you could win a $250 Gift Certificate.
http://www.wrgsurveys.com/2003/osdntech03.php?site=8
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to