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]
