I thought the no-arg constructor had to be public or protected - see "2.1 Requirements on the Entity Class" section where this is mentioned. If that's not the case so much better, but I have been adding a protected constructor in my entities.
Cheers, Thomas Craig L Russell wrote: > Hi Hans, > > On Apr 12, 2007, at 8:43 AM, Hans J. Prueller wrote: > >> hi, >> as you know I am switching from EJB2.1 CMP to JPA (OpenJPA). I'd like >> to know the preferred way to perform attribute initialisation of >> newly created entity instances, e.g. we initialized our EJB2.1 CMP >> entity beans with >> >> ejbCreate(String cid, Integer someOtherValue) >> { >> setabc(); >> setdef(); >> } >> >> //and ejbPostCreate optionally >> >> as far as I know, the JPA spec requires a no-arg constructor - so >> when providing a constructor with the same args that we have used in >> ejbCreate before, we cannot ensure that some developer calls the >> no-arg constructor by default. > > The no-arg constructor can be private. The reason it's required is so > the implementation doesn't have to guess what the right values are for > final variables. But there's no requirement to make this constructor > available to your applications. >> >> is there any other-more elegant way to force new entity instance >> initialization? > > There's no requirement for an ejbCreate and a separate ejbPostCreate > for relationships. So you are really free to do whatever you like for > the application contract. Have as many constructors as you like and > put whatever initialization into them. > > Just don't initialize the values of generated fields... > > Craig >> >> regards, >> >> HANS >> >> =========================== >> virtually hanzz... >> >> <http://hanzz.zapto.org> http://hanzz.zapto.org (personal) >> <http://www.cse.dmu.ac.uk/~hansp> http://www.cse.dmu.ac.uk/~hansp >> (research) > > Craig Russell > Architect, Sun Java Enterprise System http://java.sun.com/products/jdo > 408 276-5638 mailto:[EMAIL PROTECTED] > P.S. A good JDO? O, Gasp! >