Hi again,

Robert S. Sfeir wrote:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Thanks for the notes, I am not entirely sure what the info_id is.  Can
you explain?  How is that any different from the userID I use as a
foreign key?

you define a 1:1 reference from UserLoginBean to UserInfoBean, thus
you need a FK to UserInfoBean. If you only set 'userId' then the
reference-descriptor assume userId field-descriptor of UserLoginBean
is the FK to UserInfoBean !?
Thus you need an additional FLD.

Also the extra field ids, and proxy stuff came from the Druid app, and I
didn't get a chance to clean that up.

hmm, I recommend first get something to work before use
additional features like 'dynamic proxies'

Is the info_id going to solve my multiple insert issue?

I have not the faintest idea ;-)

> | Further the first insert gets commited even though the transaction
> | commit is not called, and therefore I can't rollback any changes once
> | the second insert fails.
Did you set 'eager-release' true in jdbc-connection-descriptor?

regards,
Armin


R

Armin Waibel wrote:

| Hi Robert,
|
| I'm not an expert on this subject,
| anyhow some notes to your posted repository
| (maybe someone can correct me):
|
| - attribute 'id' not necessary in class-descriptor
| - attribute 'id' not necessary in field-descriptor
| - attribute 'field-id-ref' is not necessary when attribute
| 'field-ref' is set too.
|
| <class-descriptor class="com.codepuccino.security.beans.UserLoginBean"
| proxy="dynamic" table="CDPCNO_USER_LOGIN">
|
|         <field-descriptor name="userID" nullable="false"
| column="USER_ID" jdbc-type="INTEGER" primarykey="true"/>
|
|         <field-descriptor name="loginName" nullable="false"
| column="USERNAME"
| jdbc-type="VARCHAR"/>
|
|         <field-descriptor name="password" nullable="false"
| column="PASSWORD"
| jdbc-type="VARCHAR"/>
|
|         <field-descriptor name="passwordReminder" column="REMINDER_CLUE"
| jdbc-type="VARCHAR"/>
|
|         <field-descriptor name="statusID" column="STATUS_ID"
| jdbc-type="INTEGER"/>
|
|         <field-descriptor name="lastLogin" nullable="false"
| column="LAST_LOGIN" jdbc-type="TIMESTAMP"/>
|
|         <field-descriptor name="baseRole" column="BASE_ROLE"
| jdbc-type="VARCHAR"/>
|
| <field-descriptor name="infoID" column="INFO_ID" jdbc-type="INTEGER"/>
|
|         <reference-descriptor name="userInfoBean"
|         class-ref="com.codepuccino.security.beans.UserInfoBean"
|         auto-update="false" auto-delete="false">
|              <foreignkey field-ref="infoID"/>
|         </reference-descriptor>
|     </class-descriptor>
|
|
| #######
| I replaced
| <foreignkey field-ref="userID" field-id-ref="1"/>
| by
| <foreignkey field-ref="infoID"/>
|
| and add a new field-descriptor 'infoId', because you need a
| field-descriptor with a fk to UserInfoBean
|
| If you don't want to declare a infoId field in your UserLoginBean
| class, declare field to be 'anonymous':
|
| <field-descriptor name="infoID" column="INFO_ID" jdbc-type="INTEGER"
| access="anonymous"/>
|
| More info see
| http://db.apache.org/ojb/howto-use-anonymous-keys.html
|
|
|
|     <class-descriptor class="com.codepuccino.security.beans.UserInfoBean"
| proxy="dynamic" table="CDPCNO_USER_INFO">
|
|         <field-descriptor name="userID" nullable="false"
| column="USER_ID" jdbc-type="INTEGER" primarykey="true"
| autoincrement="true" />
|
|         <field-descriptor name="firstName" nullable="false"
| column="FIRST_NAME" jdbc-type="VARCHAR"/>
|
|         <field-descriptor name="lastName" nullable="false"
| column="LAST_NAME"
| jdbc-type="VARCHAR"/>
|
|         <field-descriptor name="midInit" column="MID_INIT"
| jdbc-type="VARCHAR"/>
|
|         <field-descriptor name="nickname" column="NICKNAME"
| jdbc-type="VARCHAR"/>
|
|         <collection-descriptor name="userLogins"
| element-class-ref="com.codepuccino.security.beans.UserLoginBean"
| auto-update="false" auto-delete="false">
|             <inverse-foreignkey field-ref="userID"/>
|         </collection-descriptor>
|
|     </class-descriptor>
|
| You declare both classes as dynamic proxy, but in your
| code you still use real class arguments
|
| public final void addRegistration( final UserInfoBean user, final
| UserLoginBean userLoginBean )
|
| it's ok in that case, but don't forget to operate on
| the interfaces when use dynamic proxies.
|
| regards,
| Armin
|
|
| Robert S. Sfeir wrote:
|
| I am still trying to insert 2 beans into 2 separate tables, however bean
| 2 needs the userID from bean 1's insert.
|
| I can't seem to find examples for this, and everything I try inserts the
| first bean, seems to get the id after insert, I do a setUserID on the
| second bean, then perform the insert, and I still get an exception that
| user_id cannot be null.  It's NOT NULL!  I am pretty frustrated with
| this.  It should be simple, it's not.  I've tried it with ODMG and with
| PersistenceBroker, both return the same problem.
|
| Further the first insert gets commited even though the transaction
| commit is not called, and therefore I can't rollback any changes once
| the second insert fails.
|
| I'm using RC4.
|
| Here is what my insert looks like:
|
|     public final void addRegistration( final UserInfoBean user, final
| UserLoginBean userLoginBean )
|             throws DataAccessException
|     {
|         final PersistenceBroker broker =
| PersistenceBrokerFactory.defaultPersistenceBroker();
|         try
|         {
|             LOGGER.log( Level.FINEST, "Transaction open in " +
| RegistrationDAOImpl.class.getName() );
|
|             broker.beginTransaction();
|             broker.store( user );
|             userLoginBean.setUserID( user.getUserID() );
|             broker.store( userLoginBean );
|             broker.commitTransaction();
|         }
|         catch( PersistenceBrokerException tab )
|         {
|             broker.abortTransaction();
|             throw DataAccessException.datastoreError( tab );
|         }
|     }
|
| XML:
|
| <class-descriptor class="com.codepuccino.security.beans.UserLoginBean"
| proxy="dynamic" table="CDPCNO_USER_LOGIN">
|         <field-descriptor id="1" name="userID" nullable="false"
| column="USER_ID" jdbc-type="INTEGER" primarykey="true"/>
|         <field-descriptor name="loginName" nullable="false"
| column="USERNAME"
| jdbc-type="VARCHAR"/>
|         <field-descriptor name="password" nullable="false"
| column="PASSWORD"
| jdbc-type="VARCHAR"/>
|         <field-descriptor name="passwordReminder" column="REMINDER_CLUE"
| jdbc-type="VARCHAR"/>
|         <field-descriptor name="statusID" column="STATUS_ID"
| jdbc-type="INTEGER"/>
|         <field-descriptor name="lastLogin" nullable="false"
| column="LAST_LOGIN" jdbc-type="TIMESTAMP"/>
|         <field-descriptor name="baseRole" column="BASE_ROLE"
| jdbc-type="VARCHAR"/>
|         <reference-descriptor name="userInfoBean"
| class-ref="com.codepuccino.security.beans.UserInfoBean"
| auto-update="false" auto-delete="false">
|             <foreignkey field-ref="userID" field-id-ref="1"/>
|         </reference-descriptor>
|     </class-descriptor>
|     <class-descriptor class="com.codepuccino.security.beans.UserInfoBean"
| proxy="dynamic" table="CDPCNO_USER_INFO">
|         <field-descriptor id="1" name="userID" nullable="false"
| column="USER_ID" jdbc-type="INTEGER" primarykey="true"
| autoincrement="true" />
|         <field-descriptor name="firstName" nullable="false"
| column="FIRST_NAME" jdbc-type="VARCHAR"/>
|         <field-descriptor name="lastName" nullable="false"
| column="LAST_NAME"
| jdbc-type="VARCHAR"/>
|         <field-descriptor name="midInit" column="MID_INIT"
| jdbc-type="VARCHAR"/>
|         <field-descriptor name="nickname" column="NICKNAME"
| jdbc-type="VARCHAR"/>
|         <collection-descriptor name="userLogins"
| element-class-ref="com.codepuccino.security.beans.UserLoginBean"
| auto-update="false" auto-delete="false">
|             <inverse-foreignkey field-ref="userID"/>
|         </collection-descriptor>
|     </class-descriptor>
|
| PLEASE what am I missing?  I'm going gaga here because I don't see the
| problem.
|
| R
|>
|>
- ---------------------------------------------------------------------
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]

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQE/uiLP+cV9vuB27SARAnTtAJwOWq6uMxSYHT/mCMA1WLC6OI7cWgCgq71y
F18DWvmn4KXdkApzWe2ZVgA=
=QFlq
-----END PGP SIGNATURE-----


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