I suspect what you need is to tell your container to delay the SQL
insert until after ejbPostCreate. I do this in WebLogic 7.0sp1 with the
following tag:

 * @weblogic.delay-database-insert-until ejbPostCreate

If you're using a different container, well, see if it has a similar
tag. This is necessary as all our FKs are set not-null and thus won't
allow insertion without the FKs, which are of course set in
ejbPostCreate.

David Harkness
Sr. Software Engineer
Sony Pictures Digital Networks
(310) 482-4756


-----Original Message-----
From: Mick Knutson [mailto:[EMAIL PROTECTED] 
Sent: Monday, September 15, 2003 7:19 AM
To: [EMAIL PROTECTED]
Subject: Re: [Xdoclet-user] ejbCreate for an EJB with CMR issues


I actually tested that theory by throwing a CreateException in my
ejbPostCreate() and there was a record in the DB for the same AlertId,
but did not have the userId and the rest of the data in the row. Hence
an orphan record.

---
Thanks
Mick Knutson
http://www.baselogic.com

+001(805) 563-0666 Office
+001 (708) 570-2772 Fax
---

----- Original Message ----- 
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, September 15, 2003 6:37 AM
Subject: RE: [Xdoclet-user] ejbCreate for an EJB with CMR issues


> The entire 'create' process is in a transaction. If postCreate fails, 
> the entire create will be rolled back.
>
> > -----Original Message-----
> > From: Mick Knutson [mailto:[EMAIL PROTECTED]
> > Sent: Sunday, September 14, 2003 10:55 AM
> > To: XDoclet
> > Subject: [Xdoclet-user] ejbCreate for an EJB with CMR issues
> >
> >
> > I have an EJB with a CMR. I keep getting errors about not being able

> > to set CMR fields in the ejbCreate() and must do it in the 
> > ejbPostCreate(). So I did that:
> >
> >     public java.lang.String ejbCreate( AlertDto pAlertDto )
> >             throws javax.ejb.EJBException, javax.ejb.CreateException
> >     {
> >         setAlertId( pAlertDto.getAlertId() );
> >         setUserId( pAlertDto.getUserId() );
> >         //setAlertDto( pAlertDto );
> >
> >         return null;
> >     }
> >
> >     public void ejbPostCreate( AlertDto pAlertDto )
> >     {
> >         /*
> >         Update the EJB as the CMR information cannot be set at 
> > create time:
> >         java.lang.IllegalStateException: A CMR field cannot be set 
> > in ejbCreate;
> >         this should be done in the ejbPostCreate method instead [EJB

> > 2.0 Spec. 10.5.2].
> >         */
> >         setAlertDto( pAlertDto );
> >     }
> >
> >
> > But my issue is about the setUserId(). I do not want to create this 
> > EJB if the userId does _not_ get set. If so, I will have orphan data
> > with no way to
> > access it.
> >
> > So, do I need to set certain transaction types for the ejbCreate() 
> > and
> > ejbPostCreate() to ensure that the entire create/postCreate
> > completes or
> > rolls-back?
> >
> > ---
> > Thanks
> > Mick Knutson
> > http://www.baselogic.com
> >
> > +001(805) 563-0666 Office
> > +001 (708) 570-2772 Fax
> > ---
> >
> >
> > -------------------------------------------------------
> > This sf.net email is sponsored by:ThinkGeek
> > Welcome to geek heaven.
> > http://thinkgeek.com/sf 
> > _______________________________________________
> > xdoclet-user mailing list [EMAIL PROTECTED]
> > https://lists.sourceforge.net/lists/listinfo/xdoclet-user
> >
>
>
> -------------------------------------------------------
> This sf.net email is sponsored by:ThinkGeek
> Welcome to geek heaven.
> http://thinkgeek.com/sf 
> _______________________________________________
> xdoclet-user mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/xdoclet-user
>


-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf _______________________________________________
xdoclet-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/xdoclet-user


-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
xdoclet-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/xdoclet-user

Reply via email to