Gary Albers@TIMEWEB
01/28/2000 11:17 AM

Orion team:

I have an EntityBean (ValidUser) with a user defined primary key called
DefaultPK.
DefaultPK is a wrapper for an Integer attribute called 'pk'.  The bean
works
fine for findByPrimaryKey(DefaultPK).

I added a custom finder method called findByUserID(String).
In the code that Orion generates for this method, it uses a call to
java.sql.ResultSet.getBinaryStream(...) for the primary key field
(DefaultPK validUserPK).

This results in a 'java.io.StreamCorruptedException' wrapped in a
'java.lang.ClassCastException'.

I believe it should be using  java.sql.getInt(...) for the specific
attribute 'pk' within the
DefaultPK object.

Is this a bug or do I just have the deployment descriptor coded wrong?
Can Orion handle user defined classes for primary keys?

Relevant code follows below.

BTW - great product!

-Gary



Relevant snippet of ejb-jar.xml follows:
          <entity>
               <display-name>ValidUser</display-name>
               <description>ValidUser Entity Bean</description>
               <ejb-name>ValidUser</ejb-name>
               <home>IValidUserHome</home>
               <remote>IValidUser</remote>
               <ejb-class>ValidUserBean</ejb-class>
               <reentrant>True</reentrant>
               <persistence-type>Container</persistence-type>
               <primkey-field>pk</primkey-field>
               <primkey-class>DefaultPK</primkey-class>
               <cmp-field><field-name>pk</field-name></cmp-field>
               <cmp-field><field-name>userID</field-name></cmp-field>
               <cmp-field><field-name>password</field-name></cmp-field>

<cmp-field><field-name>validUserSetPK</field-name></cmp-field>
          </entity>

Relevant snippet of orion-ejb-jar.xml follows:
          <entity>
               <data-source-name>jdbc/xa/DefaultXADS</data-source-name>
               <exclusive-write-access>true</exclusive-write-access>
               <table-name>ValidUser</table-name>
               <ejb-name>ValidUser</ejb-name>
               <home-wrapper-class>EntityHomeWrapper9</home-wrapper-class>
               <location>ValidUser</location>
               <cmp-field>
                    <field-name>pk</field-name>
                    <persistence-name>validUserPK</persistence-name>
                    <persistence-type>integer</persistence-type>
               </cmp-field>
               <cmp-field>
                    <field-name>userID</field-name>
                    <persistence-name>userID</persistence-name>
                    <persistence-type>VARCHAR (15)</persistence-type>
               </cmp-field>
               <cmp-field>
                    <field-name>password</field-name>
                    <persistence-name>password</persistence-name>
                    <persistence-type>VARCHAR (15)</persistence-type>
               </cmp-field>
               <cmp-field>
                    <field-name>validUserSetPK</field-name>
                    <persistence-name>validUserSetPK</persistence-name>
                    <persistence-type>integer</persistence-type>
               </cmp-field>
               <finder-method>
                    <!-- Generated SQL: "SELECT validUserPK, userID,
password, validUserSetPK FROM ValidUser WHERE userID = ?" -->
                    <query>$userID = $1</query>
                    <method>
                         <ejb-name>ValidUser</ejb-name>
                         <method-name>findByUserID</method-name>
                         <method-params>
                              <method-param>java.lang.String</method-param>
                         </method-params>
                    </method>
               </finder-method>
          </entity>

DefaultPK class definition (stripped down):

     import java.io.Serializable;

     public class DefaultPK
            implements Serializable
     {
         public Integer pk;

         public DefaultPK(int k)
         {
             pk = new Integer(k);
         }
     }



Reply via email to