dev@glassfish.java.net

[Fwd: persistence Digest 3 Nov 2005 21:17:28 -0000 Issue 9]

From: Carla Mott <Carla.Mott_at_Sun.COM>
Date: Thu, 03 Nov 2005 13:43:06 -0800

-- 
Carla Mott
Sun Microsystems		
carla.mott_at_sun.com

attached mail follows:



MIME-version: 1.0
Content-type: text/plain; charset=us-ascii
Content-transfer-encoding: 7BIT


persistence Digest 3 Nov 2005 21:17:28 -0000 Issue 9

Topics (messages 58 through 65):

Re: Persistence Test Integrated in QuickLook
        58 by: Shelly (Donna) McGowan
        59 by: Craig L Russell

EJBQLParser change: support for aggregates in HAVING clause
        60 by: Michael Bouschen

EAR scoped Persistence Unit definition
        61 by: Sanjeeb Kumar Sahoo

Re: [Issue 66] New - Enterprise archives fail to load if MX1 and 1XM relationships used in entities within persistence archive
        62 by: Shelly (Donna) McGowan

Re: Out-of-container example?
        63 by: Michael Bouschen

Re: Primary Key generation type IDENTITY
        64 by: Shelly (Donna) McGowan
        65 by: Marina Vatkina

Administrivia:

To subscribe to the digest, e-mail:
        persistence-digest-subscribe_at_glassfish.dev.java.net

To unsubscribe from the digest, e-mail:
        persistence-digest-unsubscribe_at_glassfish.dev.java.net

To post to the list, e-mail:
        persistence_at_glassfish.dev.java.net


----------------------------------------------------------------------


Content-type: message/rfc822

Date: Tue, 01 Nov 2005 17:48:03 -0500
From: "Shelly (Donna) McGowan" <Shelly.McGowan_at_Sun.COM>
Subject: Re: Persistence Test Integrated in QuickLook
To: persistence_at_glassfish.dev.java.net
Message-id: <4367F0A3.9000808_at_Sun.COM>
MIME-version: 1.0
Content-type: text/plain; charset=us-ascii
Content-transfer-encoding: 7BIT


Deepa,

If this is a container-managed bean, the persistence context begins and
ends when the transaction begins and ends (see 5.6.2 in spec). A
detached entity is when it is not longer associated with a persistence
context. That's why it will work when the clean up method is within the
same runPersistenceTest method but not when it is a separate method. In
the clean up method, do a find on the entity prior to the remove; i.e.,

for (int i=1; i<7; i++ ) {Coffee newcoffee =
getEntityManager().find(Coffee.class, new Integer(i));
           if (newcoffee != null ) {
           getEntityManager().remove(newcoffee);
            TLogger.log("removed coffee " + newcoffee);
      }
    }


Shelly


Deepa Singh wrote On 11/01/05 16:43,:
> Hi Gordon,
> Thanks a lot for clarifying cache issues.
> I tried clearing up database through EntityManager.remove() API and now
> running into some other issues. Please advice if my usage is incorrect
> Test is setup as follows:
> Appclient-->SessionBean-->Entities
>
> Session Bean has two separate business methods "runPersistenceTest"
> which populate the rows and "cleanUp" which deletes the row after
> calling EntityManager.remove()
>
> Populating the row goes on fine, but when I try to remove it, I am now
> getting exception,
> Caused by: java.lang.IllegalArgumentException: Entity must be managed to
> call remove: ID: 2: name :Betty: city :Sunnyvale, try merging the
> detatched and try the remove again.
> at
> oracle.toplink.essentials.publicinterface.UnitOfWork.performRemove(UnitOfWork.java:2692)
> at
> oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerImpl.remove(EntityManagerImpl.java:117)
> at
> com.sun.enterprise.util.EntityManagerWrapper.remove(EntityManagerWrapper.java:171)
>
> at
> pe.ejb.ejb30.persistence.toplinksample.ejb.StatefulBean.cleanUp(StatefulBean.java:51)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>
> Just to be extra sure, I am now calling EntityManager.merge () and then
> check if entity is in managed state by calling "contains". "contains"
> returns FALSE, and if I still call "remove" then I get above mentioned
> exception. I have specified a VERSION column as well for all three
> entities , and test is run on Derby datatabase All transaction
> attributes on session bean's business methods are Defaults which is
> "REQUIRED"
>
> If cleanUp () is called inside runPersistenceTest , then I am able to
> call entities.remove successfully. But if it is invoked as a separate
> business method from application client, then even after calling merge,
> entity is in detached state.
>
>
>
> Gordon Yorke wrote:
>
>>Marina,
>> TopLink is caching the data internally. Generally users have no issue with stale data (outside of the standard concurrency issues) but if the end user has processes modifying the data external to TopLink there are configuration options for handling the external updates. With the EJB 3.0 specification however there is no clear mechanism for providing support for configuring TopLink to handle externally modified data. We are currently evaluating our options and will hopefully have a solution soon.
>> In the meantime two options are available. Have the tests clear the objects from the database using the Persistence API or reset the TopLink caches by calling : ((oracle.toplink.essentials.ejb.cmp3.EntityManager)entityManager).getActiveSession().initializeAllIdentityMaps().
>>
>>--Gordon
>>
>>-----Original Message-----
>>From: Marina Vatkina [mailto:Marina.Vatkina_at_Sun.COM]
>>Sent: Monday, October 31, 2005 4:06 PM
>>To: Deepa Singh
>>Cc: Mitesh Meswani; Shelly (Donna) McGowan; Sanjeeb Kumar Sahoo; Michael
>>Bouschen; Sailaja Rao Gangaraju; persistence
>>Subject: Re: Persistence Test Integrated in QuickLook
>>
>>
>>Hi Deepa,
>>
>>(CC-ing persistence)
>>
>>Can it be that the record is already there? TopLink code might be
>>caching results of a previous run. Keep in mind that CMP code uses
>>completely different code for persistence runtime.
>>
>>thanks,
>>-marina
>>
>>Deepa Singh wrote On 10/31/05 12:52,:
>>
>>
>>>Hi Marina,
>>>Persistence Quicklook tests is integrated into GlassFish quicklook test
>>>base.
>>>glassfish/appserv-tests/sqetests/ejb/ejb30/persistence/onetomany
>>>
>>>There is only one thing missing, when I run my test (execute only client
>>>)twice (after dropping table and re-creating it), I get following
>>>exception in my server.log'. I don't see this exception when I run CMP
>>>2.1 tests in same mode. I deploy the ear file, and then execute
>>>appclient multiple times making sure that tests passes
>>>
>>>Caused by: java.lang.IllegalArgumentException: Can not PERSIST detatched
>>>object: pe.ejb.ejb30.persistence.toplinksample.ejb.CustomerEntity_at_f0ca71.
>>> at
>>>oracle.toplink.essentials.publicinterface.UnitOfWork.registerNewObjectForPersist(UnitOfWork.java:3131)
>>> at
>>>oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerImpl.persist(EntityManagerImpl.java:96)
>>> at
>>>com.sun.enterprise.util.EntityManagerWrapper.persist(EntityManagerWrapper.java:163)
>>> at
>>>pe.ejb.ejb30.persistence.toplinksample.ejb.StatefulBean.runPersistenceTest(StatefulBean.java:25)
>>>
>>>Path is as follows:
>>>appclient-->stateful session-->persistence entities
>>>
>>>-stateful session has a method called runPersistenceTest. Please let me
>>>know how should I code this up,so that test passes after executing just
>>>client multiple times (cleaning up schema in between runs)
>>>
>>> public void runPersistenceTest(){
>>> CustomerEntity c1=new CustomerEntity(1,"Alice","Santa Clara");
>>> em.persist(c1);
>>> CustomerEntity c2=new CustomerEntity(2,"Betty","Sunnyvale");
>>> em.persist(c2);
>>> OrderEntity o1=new OrderEntity(100,1);
>>> em.persist(o1);
>>> OrderEntity o2=new OrderEntity(101,2);
>>> em.persist(o2);
>>> ItemEntity i1=new ItemEntity(100,"Camcorder");
>>> em.persist(i1);
>>> List result = em.createQuery("SELECT OBJECT(cust) FROM
>>>CustomerEntity cust").getResultList();
>>>
>>>
>>>
>>
>>
>>
>>
>
> --
> Deepa Singh
> Sun Java Enterprise System 9.0
> J2EE Core
> MailStop: USCA14-304
> Santa Clara,CA
> x40277 +1 408 404 5144
>



Content-type: message/rfc822

Date: Tue, 01 Nov 2005 16:43:30 -0800
From: Craig L Russell <Craig.Russell_at_Sun.COM>
Subject: Re: Persistence Test Integrated in QuickLook
To: persistence_at_glassfish.dev.java.net
Cc: ejb30-tck-team_at_Sun.COM
Message-id: <60177DF8-17E5-4F88-8265-ACBBA0833003_at_sun.com>
MIME-version: 1.0
Content-type: multipart/alternative;
 boundary="Boundary_(ID_0gKvooXGVowUyG2Exok5jw)"


--Boundary_(ID_0gKvooXGVowUyG2Exok5jw)
Content-type: text/plain; format=flowed; delsp=yes; charset=US-ASCII
Content-transfer-encoding: 7BIT

Hi Deepa,

On Nov 1, 2005, at 1:43 PM, Deepa Singh wrote:

> Hi Gordon,
> Thanks a lot for clarifying cache issues.
> I tried clearing up database through EntityManager.remove() API and
> now running into some other issues. Please advice if my usage is
> incorrect
> Test is setup as follows:
> Appclient-->SessionBean-->Entities
>
> Session Bean has two separate business methods "runPersistenceTest"
> which populate the rows and "cleanUp" which deletes the row after
> calling EntityManager.remove()
>
> Populating the row goes on fine, but when I try to remove it, I am
> now getting exception,
> Caused by: java.lang.IllegalArgumentException: Entity must be
> managed to call remove: ID: 2: name :Betty: city :Sunnyvale, try
> merging the detatched and try the remove again.
> at
> oracle.toplink.essentials.publicinterface.UnitOfWork.performRemove
> (UnitOfWork.java:2692)
> at
> oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerImpl.rem
> ove(EntityManagerImpl.java:117)
> at com.sun.enterprise.util.EntityManagerWrapper.remove
> (EntityManagerWrapper.java:171)
>
> at
> pe.ejb.ejb30.persistence.toplinksample.ejb.StatefulBean.cleanUp
> (StatefulBean.java:51)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke
> (NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke
> (DelegatingMethodAccessorImpl.java:25)
>
> Just to be extra sure, I am now calling EntityManager.merge () and
> then check if entity is in managed state by calling "contains".
> "contains" returns FALSE, and if I still call "remove" then I get
> above mentioned exception. I have specified a VERSION column as
> well for all three entities , and test is run on Derby datatabase
> All transaction attributes on session bean's business methods are
> Defaults which is "REQUIRED"

It sounds like you're using merge as a void operation. What merge
does is to create a copy and return the managed entity. It's the
returned entity that you can remove, not the detached instance.
>
> If cleanUp () is called inside runPersistenceTest , then I am able
> to call entities.remove successfully. But if it is invoked as a
> separate business method from application client, then even after
> calling merge, entity is in detached state.

If cleanUp is called before transaction commit, then merge will
return the identical instance. So it works.

Craig
>
>
>
> Gordon Yorke wrote:
>> Marina,
>> TopLink is caching the data internally. Generally users
>> have no issue with stale data (outside of the standard concurrency
>> issues) but if the end user has processes modifying the data
>> external to TopLink there are configuration options for handling
>> the external updates. With the EJB 3.0 specification however
>> there is no clear mechanism for providing support for configuring
>> TopLink to handle externally modified data. We are currently
>> evaluating our options and will hopefully have a solution soon.
>> In the meantime two options are available. Have the tests
>> clear the objects from the database using the Persistence API or
>> reset the TopLink caches by calling :
>> ((oracle.toplink.essentials.ejb.cmp3.EntityManager)
>> entityManager).getActiveSession().initializeAllIdentityMaps().
>>
>> --Gordon
>>
>> -----Original Message-----
>> From: Marina Vatkina [mailto:Marina.Vatkina_at_Sun.COM]
>> Sent: Monday, October 31, 2005 4:06 PM
>> To: Deepa Singh
>> Cc: Mitesh Meswani; Shelly (Donna) McGowan; Sanjeeb Kumar Sahoo;
>> Michael
>> Bouschen; Sailaja Rao Gangaraju; persistence
>> Subject: Re: Persistence Test Integrated in QuickLook
>>
>>
>> Hi Deepa,
>>
>> (CC-ing persistence)
>>
>> Can it be that the record is already there? TopLink code might be
>> caching results of a previous run. Keep in mind that CMP code uses
>> completely different code for persistence runtime.
>>
>> thanks,
>> -marina
>>
>> Deepa Singh wrote On 10/31/05 12:52,:
>>
>>> Hi Marina,
>>> Persistence Quicklook tests is integrated into GlassFish
>>> quicklook test
>>> base.
>>> glassfish/appserv-tests/sqetests/ejb/ejb30/persistence/onetomany
>>>
>>> There is only one thing missing, when I run my test (execute only
>>> client
>>> )twice (after dropping table and re-creating it), I get following
>>> exception in my server.log'. I don't see this exception when I
>>> run CMP
>>> 2.1 tests in same mode. I deploy the ear file, and then execute
>>> appclient multiple times making sure that tests passes
>>>
>>> Caused by: java.lang.IllegalArgumentException: Can not PERSIST
>>> detatched
>>> object:
>>> pe.ejb.ejb30.persistence.toplinksample.ejb.CustomerEntity_at_f0ca71.
>>> at
>>> oracle.toplink.essentials.publicinterface.UnitOfWork.registerNewObje
>>> ctForPersist(UnitOfWork.java:3131)
>>> at
>>> oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerImpl.p
>>> ersist(EntityManagerImpl.java:96)
>>> at
>>> com.sun.enterprise.util.EntityManagerWrapper.persist
>>> (EntityManagerWrapper.java:163)
>>> at
>>> pe.ejb.ejb30.persistence.toplinksample.ejb.StatefulBean.runPersisten
>>> ceTest(StatefulBean.java:25)
>>>
>>> Path is as follows:
>>> appclient-->stateful session-->persistence entities
>>>
>>> -stateful session has a method called runPersistenceTest. Please
>>> let me
>>> know how should I code this up,so that test passes after
>>> executing just
>>> client multiple times (cleaning up schema in between runs)
>>>
>>> public void runPersistenceTest(){
>>> CustomerEntity c1=new CustomerEntity(1,"Alice","Santa
>>> Clara");
>>> em.persist(c1);
>>> CustomerEntity c2=new CustomerEntity
>>> (2,"Betty","Sunnyvale");
>>> em.persist(c2);
>>> OrderEntity o1=new OrderEntity(100,1);
>>> em.persist(o1);
>>> OrderEntity o2=new OrderEntity(101,2);
>>> em.persist(o2);
>>> ItemEntity i1=new ItemEntity(100,"Camcorder");
>>> em.persist(i1);
>>> List result = em.createQuery("SELECT OBJECT(cust) FROM
>>> CustomerEntity cust").getResultList();
>>>
>>>
>>
>>
>
> --
> Deepa Singh
> Sun Java Enterprise System 9.0
> J2EE Core
> MailStop: USCA14-304
> Santa Clara,CA
> x40277 +1 408 404 5144


--Boundary_(ID_0gKvooXGVowUyG2Exok5jw)
Content-type: text/html; charset=ISO-8859-1
Content-transfer-encoding: QUOTED-PRINTABLE

<HTML><BODY style=3D"word-wrap: break-word; -khtml-nbsp-mode: space; =
-khtml-line-break: after-white-space; ">Hi Deepa,<DIV><BR><DIV><DIV>O=
n Nov 1, 2005, at 1:43 PM, Deepa Singh wrote:</DIV><BR class=3D"Apple=
-interchange-newline"><BLOCKQUOTE type=3D"cite"> Hi Gordon,<BR> Than=
ks a lot for clarifying cache issues.<BR> I tried clearing up databas=
e through EntityManager.remove() API and now running into some other =
issues. Please advice if my usage is incorrect<BR> Test is setup as f=
ollows:<BR> Appclient--&gt;SessionBean--&gt;Entities<BR> <BR> Session=
 Bean has two separate business methods "runPersistenceTest" which po=
pulate the rows and "cleanUp" which deletes the row after calling Ent=
ityManager.remove()<BR> <BR> Populating the row goes on fine, but whe=
n I try to remove it,=A0 I am now getting exception,<BR> Caused by: j=
ava.lang.IllegalArgumentException: Entity must be managed to call rem=
ove: ID: 2: name :Betty: city :Sunnyvale, try merging the detatched a=
nd try the remove again.<BR> =A0=A0=A0 at oracle.toplink.essentials.p=
ublicinterface.UnitOfWork.performRemove(UnitOfWork.java:2692)<BR> =
=A0=A0=A0 at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityM=
anagerImpl.remove(EntityManagerImpl.java:117)<BR> =A0=A0=A0 at com.su=
n.enterprise.util.EntityManagerWrapper.remove(EntityManagerWrapper.ja=
va:171)<BR> <BR> =A0=A0=A0 at pe.ejb.ejb30.persistence.toplinksample.=
ejb.StatefulBean.cleanUp(StatefulBean.java:51)<BR> =A0=A0=A0 at sun.r=
eflect.NativeMethodAccessorImpl.invoke0(Native Method)<BR> =A0=A0=
=A0 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccess=
orImpl.java:39)<BR> =A0=A0=A0 at sun.reflect.DelegatingMethodAccessor=
Impl.invoke(DelegatingMethodAccessorImpl.java:25)<BR> <BR> Just to be=
 extra sure, I am now calling EntityManager.merge () and then check i=
f entity is in managed state by calling "contains". "contains" return=
s FALSE, and if I still call "remove" then I get above mentioned exce=
ption. I have specified a VERSION column as well for all three entiti=
es , and test is run on Derby datatabase All transaction attributes o=
n session bean's business methods are Defaults which is "REQUIRED"<BR=
></BLOCKQUOTE><DIV><BR class=3D"khtml-block-placeholder"></DIV>It sou=
nds like you're using merge as a void operation. What merge does is t=
o create a copy and return the managed entity. It's the returned enti=
ty that you can remove, not the detached instance.<BR><BLOCKQUOTE typ=
e=3D"cite"> <BR> If cleanUp () is called inside runPersistenceTest , =
then I am able to call entities.remove successfully. But if it is inv=
oked as a separate business method from application client, then even=
 after calling merge, entity is in detached state.<BR></BLOCKQUOTE><D=
IV><BR class=3D"khtml-block-placeholder"></DIV>If cleanUp is called b=
efore transaction commit, then merge will return the identical instan=
ce. So it works.</DIV><DIV><BR class=3D"khtml-block-placeholder"></DI=
V><DIV>Craig<BR><BLOCKQUOTE type=3D"cite"> <BR> <BR> <BR> Gordon York=
e wrote:<BR> <BLOCKQUOTE cite=3D"mid20051101081749594.00000002552_at_gyo=
rke-pc2" type=3D"cite"> <PRE wrap=3D"">Marina,=20
        TopLink is caching the data internally. Generally users have=
 no issue with stale data (outside of the standard concurrency issues=
) but if the end user has processes modifying the data external to To=
pLink there are configuration options for handling the external updat=
es. With the EJB 3.0 specification however there is no clear mechani=
sm for providing support for configuring TopLink to handle externally=
 modified data. We are currently evaluating our options and will hope=
fully have a solution soon.
     In the meantime two options are available. Have the tests clear=
 the objects from the database using the Persistence API or reset the=
 TopLink caches by calling : ((oracle.toplink.essentials.ejb.cmp3.En=
tityManager)entityManager).getActiveSession().initializeAllIdentityMa=
ps().

--Gordon

-----Original Message-----
=46rom: Marina Vatkina [<A class=3D"moz-txt-link-freetext" href=3D"ma=
ilto:Marina.Vatkina_at_Sun.COM">mailto:Marina.Vatkina_at_Sun.COM</A>]
Sent: Monday, October 31, 2005 4:06 PM
To: Deepa Singh
Cc: Mitesh Meswani; Shelly (Donna) McGowan; Sanjeeb Kumar Sahoo; Mich=
ael
Bouschen; Sailaja Rao Gangaraju; persistence
Subject: Re: Persistence Test Integrated in QuickLook


Hi Deepa,

(CC-ing persistence)

Can it be that the record is already there? TopLink code might be
caching results of a previous run. Keep in mind that CMP code uses
completely different code for persistence runtime.

thanks,
-marina

Deepa Singh wrote On 10/31/05 12:52,:
  </PRE> <BLOCKQUOTE type=3D"cite"> <PRE wrap=3D"">Hi Marina,
Persistence Quicklook tests is integrated into GlassFish quicklook te=
st
base.
glassfish/appserv-tests/sqetests/ejb/ejb30/persistence/onetomany

There is only one thing missing, when I run my test (execute only cli=
ent
)twice (after dropping table and re-creating it), I get following
exception in my server.log'. I don't see this exception when I run C=
MP
2.1 tests in same mode. I deploy the ear file, and then execute
appclient multiple times making sure that tests passes

Caused by: java.lang.IllegalArgumentException: Can not PERSIST detatc=
hed
object: pe.ejb.ejb30.persistence.toplinksample.ejb.CustomerEntity_at_f0c=
a71.
    at
oracle.toplink.essentials.publicinterface.UnitOfWork.registerNewObjec=
tForPersist(UnitOfWork.java:3131)
    at
oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerImpl.pe=
rsist(EntityManagerImpl.java:96)
    at
com.sun.enterprise.util.EntityManagerWrapper.persist(EntityManagerWra=
pper.java:163)
    at
pe.ejb.ejb30.persistence.toplinksample.ejb.StatefulBean.runPersistenc=
eTest(StatefulBean.java:25)

Path is as follows:
appclient-->stateful session-->persistence entities

-stateful session has a method called runPersistenceTest. Please let =
me
know how should I code this up,so that test passes after executing ju=
st
client multiple times (cleaning up schema in between runs)

 public void runPersistenceTest(){
            CustomerEntity c1=3Dnew CustomerEntity(1,"Alice","Santa C=
lara");
            em.persist(c1);
            CustomerEntity c2=3Dnew CustomerEntity(2,"Betty","Sunnyva=
le");
            em.persist(c2);
            OrderEntity o1=3Dnew OrderEntity(100,1);
            em.persist(o1);
            OrderEntity o2=3Dnew OrderEntity(101,2);
            em.persist(o2);
            ItemEntity i1=3Dnew ItemEntity(100,"Camcorder");
            em.persist(i1);
            List result =3D em.createQuery("SELECT OBJECT(cust) FROM
CustomerEntity cust").getResultList();

    </PRE> </BLOCKQUOTE> <PRE wrap=3D"">
  </PRE> </BLOCKQUOTE> <BR> <PRE class=3D"moz-signature" cols=3D"72">=
--=20
Deepa Singh
Sun Java Enterprise System 9.0
J2EE Core
MailStop: USCA14-304
Santa Clara,CA
x40277 +1 408 404 5144</PRE> </BLOCKQUOTE></DIV><BR></DIV></BODY></H=
TML>

--Boundary_(ID_0gKvooXGVowUyG2Exok5jw)--


Content-type: message/rfc822

Date: Wed, 02 Nov 2005 12:10:17 +0100
From: Michael Bouschen <Michael.Bouschen_at_Sun.COM>
Subject: EJBQLParser change: support for aggregates in HAVING clause
To: Tom Ware <tom.ware_at_oracle.com>
Cc: persistence_at_glassfish.dev.java.net
Message-id: <43689E99.2020705_at_sun.com>
MIME-version: 1.0
Content-type: multipart/mixed; boundary="Boundary_(ID_wlEW/4RtSpirYFXzeGiHyA)"

This is a multi-part message in MIME format.

--Boundary_(ID_wlEW/4RtSpirYFXzeGiHyA)
Content-type: text/plain; charset=us-ascii; format=flowed
Content-transfer-encoding: 7BIT

Resend with corrected mail alias name.

--------

Hi Tom,

attached you find a patch adding support for aggregate functions in the
EJBQL parser. I also fixed a bug in the HavingNode implementation. There
were cases where the having expression was not registered as left child
of the HavingNode and this caused a NullPointerException when
initializing the ReportQuery. Please have a look at the changes.

There is a glassfish issue for the missing support of aggregates in the
HAVING clause: https://glassfish.dev.java.net/issues/show_bug.cgi?id=60.
I assigned the issue to me.

Regards Michael


--Boundary_(ID_wlEW/4RtSpirYFXzeGiHyA)
Content-type: application/java-archive; name=EJBQL-AggregatesInHaving-051102.jar
Content-transfer-encoding: BASE64
Content-disposition: inline; filename=EJBQL-AggregatesInHaving-051102.jar

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
fxCnIj8CLCIMr49GrNdNX8Finpz+YpOcHjz9bC5pjYFdWdtQvEdrs2GqYDSGrVVY
1H3fIE9tgaUeiAEKGwgUs3+zoAaFeeP6Pr59+BQe0V2Dl8T31emYMcDSYQwVWClz
QmYLdVLNbJFoJj+NrR648uZ2bbSC1jyXTB7vraBF2slOkJpHody2efIdU5VYsO/y
x8riIGELzLL9Pq0Dyk/a4SC4UzYbW99MpmNRHraxuPYrByUGc6iPDw+9sQ1Mzd79
HLHNbvqjHTzNZvgcsTE88PGBZ1w1CPUazLO05nWiXrsLUXhEgcuZFwPRvmmc8oM4
pEB1Ro6xudv9wTH6TEOHeCdVKJFop9HNaHpn39oVFGq4R2kipNn65dH+QfoUbqk/
DCKrbgTZll+b0Epd9gcz2tyu/CZb72uwVHTSH+xzktTGWJ6J/vpnJ5l0y131BxAr
4n2Ax9mjcpKzzCCq4gPPRLcAS8+VyRxaHncRuLIZf//rAPHxOW0+ezquOvU7PaWp
rqDcaOQ584MsPZ5nr3ytQvMEzIZLOoKbiAcOTGxDaNZ9pkqL9nulLk2+MVEWEkiF
yIysev32Hl8nlSWMqvPcXdGPwf+wQeBtdZRNT2nLvW9Q419aeD3B0F1fTx1+JNJX
VyQZgiQJWDncxOMj0zFWcfaZAp2Kv5ZvLXD5hSzSKR15VSEvK8hP36mJNWuhtuvC
LjJ+2bziOHtxWHn2duX3Jtzsef8VxzQXTa2U9PHuwx7nZJ0h3zn6UPPOS3yjYm7d
/1cF8K7wVRZA4R0YiaFAfwiGyADSc3jHf8mZjb+k8ia+ckhMbPR9f2IhK1Uc1a++
B+kaTknfwqn44wwl0ckVEF56Ref3i/8BUEsHCH9ugUtfDwAAx2gAAFBLAwQUAAgA
CAA7iFwzAAAAAAAAAAAAAAAAUQAAAHNyYy9qYXZhL29yYWNsZS90b3BsaW5rL2Vz
c2VudGlhbHMvaW50ZXJuYWwvcGFyc2luZy9QYXJzZVRyZWVOb2RlQ29uc3RydWN0
b3IuamF2Yc09a3PbOJLf8yuw/mI545Fmr+6qdmcS18mSEisnSx5JTm5qamqLkiCJ
Y4rU8GHFezv//brxIAEQFCmaSq0qKZN4NLobjUYDaDQ7b9+Qt2S+pWQZ+DH144gE
axJv3YisXY8SJ6QkSha/02VM4gAyKIlpuIsIVmMlKekFu13gkz59pl6w3wEQ4vgr
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
aW3XTiHJqg4mC1nW/f824fG+8fvvjRZYLjxTU7t2Cjlm/N6AUAZYAp/4RGGpDLdo
qEi3A8/cEESRZr3RqFOLCPFg9/iLKjBeYTqATvP5cw7KdGEkU5/IMeZ3SH4QT+Lj
aL+S8Ayp8gwJCZ46+IANXk+ElIkkeUgkAesmCEO6AyKv8dh1oFyp/oqEucrCtPjL
RvhNnxp9qgf8KF1fuYZMP85T9tY55CsyJbcq8YNSzC+2CZ4YPz3G3hVcFtCgIYVj
SqUg+hpNuozzcIZ9UXmfoMYg3V/Sd7Cgs6HMcCzXODStxCKGeQP7uaI6scQSMsEE
ow9iIgH+xlNGTmJLGDnk+PWMvSeHjnSZ462aueJBnA77/eF7FoMOKWnb9S/jE3IP
YBXkrCHRIB/biNRvon4z9Xulfufqt65+wYrUw+8NFT1yTB9MBHrgqeYEph849jdr
FaGvIvLZj6GY0HfgxDiVRjw6kBbJmVCq6XEkfVmIk/9ymvoWXP/EpIg+J6//B1BL
BwjwPjHHeBcAAChPAABQSwECFAAUAAgACACjWmIzAAAAAAIAAAAAAAAACQAEAAAA
AAAAAAAAAAAAAAAATUVUQS1JTkYv/soAAFBLAQIUABQACAAIAKNaYjO83LSBRwAA
AEcAAAAUAAAAAAAAAAAAAAAAAD0AAABNRVRBLUlORi9NQU5JRkVTVC5NRlBLAQIU
ABQACAAIAKWGXDMy4+YU5AYAABIWAABGAAAAAAAAAAAAAAAAAMYAAABzcmMvamF2
YS9vcmFjbGUvdG9wbGluay9lc3NlbnRpYWxzL2ludGVybmFsL3BhcnNpbmcvQWdn
cmVnYXRlTm9kZS5qYXZhUEsBAhQAFAAIAAgA84BcM39ugUtfDwAAx2gAAE0AAAAA
AAAAAAAAAAAAHggAAHNyYy9qYXZhL29yYWNsZS90b3BsaW5rL2Vzc2VudGlhbHMv
aW50ZXJuYWwvcGFyc2luZy9QYXJzZVRyZWVDb25zdHJ1Y3Rvci5qYXZhUEsBAhQA
FAAIAAgAO4hcM2OmS2jRFAAApHUAAFEAAAAAAAAAAAAAAAAA+BcAAHNyYy9qYXZh
L29yYWNsZS90b3BsaW5rL2Vzc2VudGlhbHMvaW50ZXJuYWwvcGFyc2luZy9QYXJz
ZVRyZWVOb2RlQ29uc3RydWN0b3IuamF2YVBLAQIUABQACAAIACmKXDPwPjHHeBcA
AChPAABQAAAAAAAAAAAAAAAAAEgtAABzcmMvamF2YS9vcmFjbGUvdG9wbGluay9l
c3NlbnRpYWxzL2ludGVybmFsL3BhcnNpbmcvZWpicWwvYW50bHIyNzMvRUpCUUxQ
YXJzZXIuZ1BLBQYAAAAABgAGAGkCAAA+RQAAAAA=

--Boundary_(ID_wlEW/4RtSpirYFXzeGiHyA)--


Content-type: message/rfc822

Date: Wed, 02 Nov 2005 18:52:50 +0530
From: Sanjeeb Kumar Sahoo <Sanjeeb.Sahoo_at_Sun.COM>
Subject: EAR scoped Persistence Unit definition
To: Mike Keith <michael.keith_at_oracle.com>
Cc: "persistence_at_glassfish.dev.java.net" <persistence_at_glassfish.dev.java.net>,
 Qingqing Ouyang <Qingqing.Ouyang_at_Sun.COM>
Message-id: <4368BDAA.1060307_at_Sun.COM>
MIME-version: 1.0
Content-type: text/plain; charset=windows-1252; format=flowed
Content-transfer-encoding: 8BIT

********resending as I have not yet received a response *******

Hi Mike,
I have a question regarding root of EAR scoped persistence unit.
Referring the packaging proposal dated 19 Oct 2005, I see the following
being mentioned in the spec:
A persistence unit is defined by a persistence.xml file. The jar file or
directory whose
META-INF directory contains the persistence.xml file is termed the root
of the persistence unit.
In Java EE, the root of a persistence unit may be one of the following:
• ...
• a jar file in the root of the EAR
• a jar file in the EAR lib directory
• ...

I have an structure like this:
app.ear (lib is designated as the library dir)
par1.jar
lib/par2.jar
some_arbitrary_dir/par3.jar
some_arbitrary_dir/ejb.jar

where, par1.jar, par2.jar & par3.jar contain META-INF/persistence.xml
and neither of them is an ejb-jar or app-client-jar.

What are the ear scoped PU Roots defined here?

a) par1.jar, lib/par2.jar, some_arbitrary_dir/par3.jar
OR
b) par1.jar, lib/par2.jar

If the answer is #b, then why do we not give user the flexibility to
organise their ear scoped persistence-units in any arbitrary directory
structures, just like they can organise their ejb-jar, war, rar or
appclient-jars in any arbitrary directory structures inside the ear?

Thanks,
Sahoo



Content-type: message/rfc822

Date: Wed, 02 Nov 2005 16:58:27 -0500
From: "Shelly (Donna) McGowan" <Shelly.McGowan_at_Sun.COM>
Subject: Re: [Issue 66] New - Enterprise archives fail to load if MX1 and 1XM
 relationships used in entities within persistence archive
To: "persistence_at_glassfish.dev.java.net" <persistence_at_glassfish.dev.java.net>
Message-id: <43693683.4070407_at_Sun.COM>
MIME-version: 1.0
Content-type: text/plain; charset=us-ascii
Content-transfer-encoding: 7BIT



This issue is still occurring on the latest Glassfish builds (11/1).
There is no workaround that I'm aware of that resolves the issue except
to use last week's promoted build (10/26).

If there is a workaround, please reply to this alias.

Shelly





smcgowan_at_dev.java.net wrote On 10/30/05 17:01,:
> https://glassfish.dev.java.net/issues/show_bug.cgi?id=66
> Issue #|66
> Summary|Enterprise archives fail to load if MX1 and 1XM relati
> |onships used in entities within persistence archive
> Component|glassfish
> Version|9.0pe
> Platform|Sun
> OS/Version|Solaris
> URL|
> Status|NEW
> Status whiteboard|
> Keywords|
> Resolution|
> Issue type|DEFECT
> Priority|P1
> Subcomponent|entity-persistence
> Assigned to|mvatkina
> Reported by|smcgowan
>
>
>
>
>
>
> ------- Additional comments from smcgowan_at_dev.java.net Sun Oct 30 22:01:42 +0000 2005 -------
> enterprise archives containing a persistence archive in which the entities have
> a ManyToOne or OneToMany relationship defined fail to load with a
> ValidationException as shown below. These mapping of the relationships are
> correctly defined and have worked till recently (10/27). The verifier
> highlights the same problem.
>
>
>
> Exception Description: The attribute [employees] in entity class [class
> com.sun.ts.tests.ejb30.persistence.query.apitests.Insurance] has
> a mappedBy value of [insurance] which does not exist in its owning entity class
> [class com.sun.ts.tests.ejb30.persistence.query.apitests.
> EmbeddableSuperclass, this is invalid, and your attribute should reference the
> correct subclass.
> Local Exception Stack:
> Exception [TOPLINK-7154] (Oracle TopLink Essentials - 10g release 4 (10.1.4.0.0)
> (Build 051026Dev)): oracle.toplink.essentials.exceptions.ValidationException
> Exception Description: The attribute [employees] in entity class [class
> com.sun.ts.tests.ejb30.persistence.query.apitests.Insurance] has
> a mappedBy value of [insurance] which does not exist in its owning entity class
> [class com.sun.ts.tests.ejb30.persistence.query.apitests.
> EmbeddableSuperclass, this is invalid, and your attribute should reference the
> correct subclass.
> at
> oracle.toplink.essentials.exceptions.ValidationException.noMappedByAttributeFound(ValidationException.java:1019)
> at
> oracle.toplink.essentials.internal.annotations.EJBAnnotationsProcessor.getOwnerMapping(EJBAnnotationsProcessor.java:418)
> at
> oracle.toplink.essentials.internal.annotations.EJBAnnotationsProcessor.getOwnerMappingForeignKeys(EJBAnnotationsProcessor.java:430)
> at
> oracle.toplink.essentials.internal.annotations.EJBAnnotationsProcessor.processOneToMany(EJBAnnotationsProcessor.java:1893)
> at
> oracle.toplink.essentials.internal.annotations.EJBAnnotationsProcessor.processRelationshipAccessor(EJBAnnotationsProcessor.java:2236)
> at
> oracle.toplink.essentials.internal.annotations.EJBAnnotationsProcessor.processRelatedClass(EJBAnnotationsProcessor.java:2207)
> at
> oracle.toplink.essentials.internal.annotations.EJBAnnotationsProcessor.processORAnnotations(EJBAnnotationsProcessor.java:1989)
> at
> oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:299)
> at
> oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.createContainerEntityManagerFactory(EntityManagerFactoryProvider.java:
> 104)
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: issues-unsubscribe_at_glassfish.dev.java.net
> For additional commands, e-mail: issues-help_at_glassfish.dev.java.net
>



Content-type: message/rfc822

Date: Thu, 03 Nov 2005 13:40:40 +0100
From: Michael Bouschen <Michael.Bouschen_at_Sun.COM>
Subject: Re: Out-of-container example?
To: persistence <persistence_at_glassfish.dev.java.net>
Cc: Tom Ware <tom.ware_at_oracle.com>
Message-id: <436A0548.9070805_at_sun.com>
MIME-version: 1.0
Content-type: multipart/mixed; boundary="Boundary_(ID_oF/bjlogNA6QziWmSRPr9A)"

This is a multi-part message in MIME format.

--Boundary_(ID_oF/bjlogNA6QziWmSRPr9A)
Content-type: text/plain; charset=us-ascii; format=flowed
Content-transfer-encoding: 7BIT

Hi Marina,

attached you find a Main.java and a persistence.xml.

Class Main implements a main method that creates EMF, EM, starts a tx,
persists a new Customer, commits the tx and then runs an EJBQL query.
The persistence.xml lists the persistent classes from the application
domain, e.g. oracle.toplink.examples.Customer, etc. I added the values
for jdbc driver name, url, anme and password as <driver>, <url>, etc.
This needs to be changed according to the local environment.

You need to add the -javaagent option to the jvm call:
   java -javaagent:${glassfish.home}/lib/toplink-essentials-agent.jar Main

In addition to the jdbc driver I have the following jars from the
{glassfish.home}/lib directory in the classpath: asm.jar,
toplink-essentials.jar, antlr.jar, javaee.jar.

I hope this helps.

Regards Michael

> Michael, Tom,
>
> Can you give an example of persistence.xml
> and a main() method that constructs emf for
> a Java SE persistence?
>
> It'll be helpful to put this on the Entity
> Persistence web page.
>
> thanks,
> -marina
>




--Boundary_(ID_oF/bjlogNA6QziWmSRPr9A)
Content-type: text/plain; name=Main.java
Content-transfer-encoding: 7BIT
Content-disposition: inline; filename=Main.java

import java.util.List;

import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import javax.persistence.Query;

import oracle.toplink.examples.Customer;

/** */
public class Main {
    
    /** Sample code running creating an emf an*/
    public static void main (String[] args) {

        // Create EMF for a persistence unit called j2seEnvironment.
        EntityManagerFactory emf =
            Persistence.createEntityManagerFactory("j2seEnvironment");

        // create EM
        EntityManager em = emf.createEntityManager();

        // Get a transaction instance and start the transaction
        EntityTransaction tx = em.getTransaction();
        tx.begin();

        // Create a new customer and persist it.
        Customer c = new Customer();
        c.setName("Michael Bouschen");
        em.persist(c);

        // Commit the transaction
        tx.commit();

        // run an EJBQL query selecting a customer by name
        String ejbql = "SELECT c FROM Customer c WHERE c.name = :name";
        Query query = em.createQuery(ejbql);
        query.setParameter("name", "Michael Bouschen");
        List result = query.getResultList();
        System.out.println("EJBQL query " + ejbql + " returns " + result);

    }
    
}


--Boundary_(ID_oF/bjlogNA6QziWmSRPr9A)
Content-type: text/xml; name=persistence.xml
Content-transfer-encoding: 7BIT
Content-disposition: inline; filename=persistence.xml

<persistence xmlns="http://java.sun.com/xml/ns/persistence">
    <persistence-unit name="j2seEnvironment">
        <provider>oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider>
        <class>oracle.toplink.examples.Customer</class>
        <class>oracle.toplink.examples.Item</class>
        <class>oracle.toplink.examples.Order</class>
        <class>oracle.toplink.examples.Country</class>
        <properties>
            <property name="jdbc.driver" value="<driver>"/>
            <property name="jdbc.connection.string" value="<url>"/>
            <property name="jdbc.user" value="<user>"/>
            <property name="jdbc.password" value="<password>"/>
            <property name="toplink.logging.level" value="INFO"/>
        </properties>
    </persistence-unit>
</persistence>


--Boundary_(ID_oF/bjlogNA6QziWmSRPr9A)--


Content-type: message/rfc822

Date: Thu, 03 Nov 2005 15:03:56 -0500
From: "Shelly (Donna) McGowan" <Shelly.McGowan_at_Sun.COM>
Subject: Re: Primary Key generation type IDENTITY
To: Andrei Ilitchev <andrei.ilitchev_at_oracle.com>
Cc: Ming Zhang <Ming.Zhang_at_Sun.COM>, Peter Krogh <peter.krogh_at_oracle.com>,
 Mitesh Meswani <Mitesh.Meswani_at_Sun.COM>,
 Mike Keith <michael.keith_at_oracle.com>, ejb3-toplink-ext_at_sun.com,
 persistence_at_glassfish.dev.java.net
Message-id: <436A6D2C.70209_at_Sun.COM>
MIME-version: 1.0
Content-type: text/plain; charset=us-ascii
Content-transfer-encoding: 7BIT


Andrei,

While we're on the subject. Can you also define the behavior when
GeneratoryType.AUTO is used? From the spec, AUTO indicates the
persistence provider will choose the appropriate strategy for a
particular database. When running against Oracle DB, the entity fails
during persist with the error shown below.


Id annotated as follows:

   @Id(generate = GeneratorType.AUTO)
   public Integer getId()
   {
      return id;
   }
   public void setId(Integer id)
   {
      this.id= id;
   }


Any special configuration/table creation to be done for AUTO?

Shelly




persist DataType|#]

[#|2005-11-03T09:56:40.969-0500|INFO|sun-appserver-pe9.0|javax.enterprise.system.stream.out|_ThreadID
=31;_ThreadName=p: thread-pool-1; w: 6;|
[TopLink Warning]: 2005.11.03
09:56:40.927--ClientSession(33495740)--Exception [TOPLINK-4002] (Oracle
 TopLink Essentials - 10g release 4 (10.1.4.0.0) (Build 051023Dev)):
oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: [Oracle] #21 ORA-00942: table
or view does not exist
Error Code: 942
Call:UPDATE SEQUENCE SET SEQ_COUNT = SEQ_COUNT + 50 WHERE SEQ_NAME =
'SEQ_GEN' Query:DataModifyQuery()
|#]

[#|2005-11-03T09:56:40.974-0500|INFO|sun-appserver-pe9.0|javax.enterprise.system.stream.out|_ThreadID
=31;_ThreadName=p: thread-pool-1; w: 6;|Unexpection Exception :Exception
[TOPLINK-4002] (Oracle TopLink Essentials - 10g release 4 (10.1.4.0.0)
(Build 051023Dev)): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: [Oracle] #21 ORA-00942: table
or view does not exist
Error Code: 942
Call:UPDATE SEQUENCE SET SEQ_COUNT = SEQ_COUNT + 50 WHERE SEQ_NAME =
'SEQ_GEN'Query:DataModifyQuery()|#]



Andrei Ilitchev wrote On 11/03/05 13:43,:
>>>Does Toplink support GeneratorType.IDENTITY?
>
> Yes it does.
>
>>>What is the expected DDL for the target table for various dbs?
>
> On Sybase, SqlServer, Informix, MySQL4 the PK is created as Identity:
> CREATE TABLE EMPLOYEE (EMP_ID NUMERIC(15) IDENTITY NOT NULL,...
>
> There is no Identity field notion in Oracle database, so one should use
> GeneratorType.SEQUENCE instead.
> However TopLink implementation allows using IDENTITY on Oracle too - the
> result is Oracle sequence
> named SEQ_GEN_SEQUENCE with default (for sequences in TopLink) increment 50.
> If you define sequence generator with this name you can specify another
> sequence name and preallocation value, for instance
> @SequenceGenerator(name="SEQ_GEN_SEQUENCE", sequenceName="SEQ",
> allocationSize=1)
> would cause creation of Oracle sequence named SEQ with increment 1.
>
> Currently TopLink doesn't support GeneratorType.IDENTITY for any other
> databases.
>
> Andrei
>
> ----- Original Message -----
> From: "Ming Zhang" <ming.zhang_at_Sun.COM>
> To: "Peter Krogh" <peter.krogh_at_oracle.com>
> Cc: "Mitesh Meswani" <mitesh.meswani_at_Sun.COM>; "Mike Keith"
> <michael.keith_at_oracle.com>; <ejb3-toplink-ext_at_Sun.COM>;
> <persistence_at_glassfish.dev.java.net>
> Sent: Wednesday, November 02, 2005 7:16 PM
> Subject: Re: Primary Key generation type IDENTITY
>
>
>
>>Hi Peter,
>>
>>Do you have any update for the following 2 questions?
>>Thanks,
>>Ming
>>
>>Mitesh Meswani wrote:
>>
>>
>>>Mike,
>>>Thanks for correcting. My original question below was not correct.
>>>
>>>Peter,
>>>The correct question this time. Does Toplink support
>>>GeneratorType.IDENTITY? What is the expected DDL for the target table for
>>>various dbs?
>>>
>>>Thanks,
>>>Mitesh
>>>
>>>Mike Keith wrote:
>>>
>>>
>>>>Sounds like there is some confusion around this issue. Maybe I can help.
>>>>
>>>>- There is no IdentityGenerator in the spec. When the generation
>>>>type is set to IDENTITY then it means that an IDENTITY column, such
>>>>as is available in SQL Server and Sybase, is used. This is different
>>>>from SEQUENCE, which requires a database sequence be set up.
>>>>- When IDENTITY is used then the table must be generated to have an
>>>>IDENTITY column in it (e.g. in SQL Server it might look something like:
>>>>
>>>>CREATE TABLE Employee (
>>>> id int IDENTITY(10,2),
>>>> name varchar(50)
>>>>)
>>>>
>>>>The identifier attribute must be mapped to the identity column.
>>>>
>>>>-Mike
>>>>
>>>>
>>>>
>>>>>-----Original Message-----
>>>>>From: Mitesh Meswani [mailto:mitesh.meswani_at_Sun.COM]
>>>>>Sent: Thursday, October 20, 2005 1:56 PM
>>>>>To: Peter Krogh
>>>>>Cc: Ming Zhang; ejb3-toplink-ext_at_Sun.COM;
>>>>>persistence_at_glassfish.dev.java.net
>>>>>Subject: Re: Primary Key generation type IDENTITY
>>>>>
>>>>>
>>>>>Hi Peter,
>>>>>
>>>>>I will try to clarify the question on Ming's behalf:
>>>>>Does toplink support IdentityGenerator for generated pk values. If yes,
>>>>>what is the expected DDL for running against various dbs.
>>>>>
>>>>>Thanks,
>>>>>Mitesh
>>>>>
>>>>>Peter Krogh wrote:
>>>>>
>>>>>
>>>>>
>>>>>>I am not sure that I fully understand your questions, but
>>>>>
>>>>>let me give
>>>>>
>>>>>
>>>>>>them a shot.
>>>>>>
>>>>>>1. Are the sequence name "SEQ_GEN_SEQUENCE" and its
>>>>>
>>>>>increment/initial
>>>>>
>>>>>
>>>>>>values changeable for IDENTITY type PK?
>>>>>>I think that this is what the SeqeunceGenerator annotation is for.
>>>>>>
>>>>>>2. Is there an IdentityGenerator annotation similar to
>>>>>>@SequenceGenerator? What's the usage? In case of @SequenceGenerator,
>>>>>>the above values can be set in its elements. For example:
>>>>>> @SequenceGenerator(name="mySequenceGenerator", sequenceName =
>>>>>>"SEQ_NAME", initialValue=1, allocationSize=1)
>>>>>>
>>>>>>Again, I believe that the correct one to use is the
>>>>>>SeqeunceGenerator. The table based sequencing is called
>>>>>
>>>>>TableGenerator.
>>>>>
>>>>>
>>>>>>The error that you are getting is because the allocation size is set
>>>>>>to 50. You must either set the increment by on your sequence to 50,
>>>>>>or change the allocation size using SequenceGenerator like you
>>>>>>indicated above.
>>>>>>
>>>>>>-----Original Message-----
>>>>>>*From:* Ming Zhang [mailto:ming.zhang_at_Sun.COM]
>>>>>>*Sent:* Thursday, October 20, 2005 12:38 PM
>>>>>>*To:* Peter Krogh
>>>>>>*Cc:* ejb3-toplink-ext_at_Sun.COM
>>>>>>*Subject:* Re: Primary Key generation type IDENTITY
>>>>>>
>>>>>> I an using DDL. Added the "create sequence" in it:
>>>>>> create table datatypes(ID INTEGER, shortData smallint, longData
>>>>>> number, floatData real,
>>>>>> sqldatedata date, utildatedata date, timeStampData timestamp(9),
>>>>>> integerData integer,
>>>>>> byteData number, booleanData number, characterData char(100),
>>>>>> CONSTRAINT DATATYPES_PK PRIMARY KEY (ID));
>>>>>>
>>>>>> create sequence SEQ_GEN_SEQUENCE START WITH 1 INCREMENT BY 1;
>>>>>>
>>>>>> Now I got "increment does not match its pre-allocation size":
>>>>>> Caused by: Exception [TOPLINK-7027] (Oracle TopLink Essentials -
>>>>>> 10g release 4 (10.1.4.0.0) (Build 051010Dev)):
>>>>>> oracle.toplink.essentials.exceptions.ValidationException
>>>>>> Exception Description: The sequence named [SEQ_GEN_SEQUENCE] is
>>>>>> setup incorrectly. Its increment does not match its
>>>>>> pre-allocation size.
>>>>>> at
>>>>>>
>>>>>
>>>>>oracle.toplink.essentials.exceptions.ValidationException.seque
>>>>>nceSetupIncorrectly(ValidationException.java:1200)
>>>>>
>>>>>
>>>>>> at
>>>>>>
>>>>>
>>>>>oracle.toplink.essentials.sequencing.StandardSequence.createVe
>>>>>ctor(StandardSequence.java:146)
>>>>>
>>>>>
>>>>>> ...
>>>>>>
>>>>>> But still have following questions:
>>>>>> 1. Are the sequence name "SEQ_GEN_SEQUENCE" and its
>>>>>> increment/initial values changeable for IDENTITY type PK?
>>>>>> 2. Is there an IdentityGenerator annotation similar to
>>>>>> @SequenceGenerator? What's the usage? In case of
>>>>>> @SequenceGenerator, the above values can be set in its elements.
>>>>>> For example:
>>>>>> @SequenceGenerator(name="mySequenceGenerator", sequenceName =
>>>>>> "SEQ_NAME", initialValue=1, allocationSize=1)
>>>>>>
>>>>>> Thanks,
>>>>>> Ming
>>>>>>
>>>>>>
>>>>>> Peter Krogh wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>> It appears that this sequence is not created on the DB.
>>>>>>>
>>>>>>> How are you creating this? Using the DDL generation?
>>>>>>
>>>>>Manually?
>>>>>
>>>>>
>>>>>>> Check the DB and see if that sequence is created
>>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> *From:* Ming Zhang [mailto:ming.zhang_at_Sun.COM]
>>>>>>> *Sent:* Wednesday, October 19, 2005 8:54 PM
>>>>>>> *To:* ejb3-toplink-ext_at_Sun.COM
>>>>>>> *Subject:* Primary Key generation type IDENTITY
>>>>>>>
>>>>>>> Hello TopLink experts,
>>>>>>>
>>>>>>> I have some general questions regarding the IDENTITY PK
>>>>>>> generation type. How is the ID annotated in this
>>>>>>
>>>>>case and is
>>>>>
>>>>>
>>>>>>> there a IdentityGenerator annotation similar to
>>>>>>> @SequenceGenerator annotation? What's the specific
>>>>>>
>>>>>usage? How
>>>>>
>>>>>
>>>>>>> do we handle these in DDL?
>>>>>>>
>>>>>>> I tried @Id(generate = GeneratorType.IDENTITY) in
>>>>>>
>>>>>my apps and
>>>>>
>>>>>
>>>>>>> was able to compile deploy. But got following exception
>>>>>>> during runtime:
>>>>>>> Caused by: Exception [TOPLINK-4002] (Oracle TopLink
>>>>>>> Essentials - 10g release 4 (10.1.4.0.0) (Build 051010Dev)):
>>>>>>> oracle.toplink.essentials.exceptions.DatabaseException
>>>>>>> Internal Exception: java.sql.SQLException:
>>>>>>
>>>>>[sunm][Oracle JDBC
>>>>>
>>>>>
>>>>>>> Driver][Oracle]ORA-02289: *sequence does not exist*
>>>>>>> Error Code: 2289
>>>>>>> Call:SELECT SEQ_GEN_SEQUENCE.NEXTVAL FROM DUAL
>>>>>>> Query:ValueReadQuery()
>>>>>>> at
>>>>>>>
>>>>>>
>>>>>oracle.toplink.essentials.exceptions.DatabaseException.sqlExce
>>>>>ption(DatabaseException.java:310)
>>>>>
>>>>>
>>>>>>> at
>>>>>>>
>>>>>>
>>>>>oracle.toplink.essentials.internal.databaseaccess.DatabaseAcce
>>>>>ssor.basicExecuteCall(DatabaseAccessor.java:550)
>>>>>
>>>>>
>>>>>>> at
>>>>>>>
>>>>>>
>>>>>oracle.toplink.essentials.internal.databaseaccess.DatabaseAcce
>>>>>ssor.executeCall(DatabaseAccessor.java:436)
>>>>>
>>>>>
>>>>>>> Thanks,
>>>>>>> Ming
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> 6f4mWKmVZd/5GiAuNBf0Rw)--
>>>>>>>
>>>>>>>
>>>>>>
>>>>
>>>>
>>>>
>>
>
>



Content-type: message/rfc822

Date: Thu, 03 Nov 2005 13:16:24 -0800
From: Marina Vatkina <Marina.Vatkina_at_Sun.COM>
Subject: Re: Primary Key generation type IDENTITY
To: Andrei Ilitchev <andrei.ilitchev_at_oracle.com>
Cc: Shelly.McGowan_at_Sun.COM, Ming Zhang <Ming.Zhang_at_Sun.COM>,
 Peter Krogh <peter.krogh_at_oracle.com>, Mitesh Meswani <Mitesh.Meswani_at_Sun.COM>,
 Mike Keith <michael.keith_at_oracle.com>, ejb3-toplink-ext_at_sun.com,
 persistence_at_glassfish.dev.java.net
Message-id: <436A7E27.98415A36_at_sun.COM>
MIME-version: 1.0
Content-type: text/plain; charset=iso-8859-15
Content-transfer-encoding: 7BIT

Andrei,

This is not how would I read the spec. From a user's perspective AUTO would
be to rely on the persistence provider to do what's needed for the particular
database, without any extra effort from the user.

thanks,
-marina

Andrei Ilitchev wrote:

> GeneratoryType.AUTO causes generation of a sequence defined in a generator
> (SequenceGenerator or TableGenerator) named SEQ_GEN.
> If SEQ_GEN is not defined AUTO generates a TableSequence that uses default
> TopLink values:
> tableName = SEQUENCE;
> pkColumnName = SEQ_NAME;
> valueColumnName = SEQ_COUNT;
> pkColumnValue = SEQ_GEN;
> allocationSize = 50;
>
> So to set AUTO to use customary table:
> @TableGenerator(
> name="SEQ_GEN",
> table=_at_Table(name="MY_SEQUENCE"),
> pkColumnName="MY_SEQ_NAME",
> valueColumnName="MY_SEQ_COUNT",
> pkColumnValue="MY_SEQ"
> allocationSize = 10;
> )
>
> So to set AUTO to use sequence:
> @SequenceGenerator(name="SEQ_GEN", sequenceName="MY_SEQ",
> allocationSize=25)
>
> The errors you got indicate that sequence table doesn't exist.
>
> ----- Original Message -----
> From: "Shelly (Donna) McGowan" <Shelly.McGowan_at_Sun.COM>
> To: "Andrei Ilitchev" <andrei.ilitchev_at_oracle.com>
> Cc: "Ming Zhang" <Ming.Zhang_at_Sun.COM>; "Peter Krogh"
> <peter.krogh_at_oracle.com>; "Mitesh Meswani" <Mitesh.Meswani_at_Sun.COM>; "Mike
> Keith" <michael.keith_at_oracle.com>; <ejb3-toplink-ext_at_Sun.COM>;
> <persistence_at_glassfish.dev.java.net>
> Sent: Thursday, November 03, 2005 3:03 PM
> Subject: Re: Primary Key generation type IDENTITY
>
> >
> > Andrei,
> >
> > While we're on the subject. Can you also define the behavior when
> > GeneratoryType.AUTO is used? From the spec, AUTO indicates the
> > persistence provider will choose the appropriate strategy for a
> > particular database. When running against Oracle DB, the entity fails
> > during persist with the error shown below.
> >
> >
> > Id annotated as follows:
> >
> > @Id(generate = GeneratorType.AUTO)
> > public Integer getId()
> > {
> > return id;
> > }
> > public void setId(Integer id)
> > {
> > this.id= id;
> > }
> >
> >
> > Any special configuration/table creation to be done for AUTO?
> >
> > Shelly
> >
> >
> >
> >
> > persist DataType|#]
> >
> > [#|2005-11-03T09:56:40.969-0500|INFO|sun-appserver-pe9.0|javax.enterprise.system.stream.out|_ThreadID
> > =31;_ThreadName=p: thread-pool-1; w: 6;|
> > [TopLink Warning]: 2005.11.03
> > 09:56:40.927--ClientSession(33495740)--Exception [TOPLINK-4002] (Oracle
> > TopLink Essentials - 10g release 4 (10.1.4.0.0) (Build 051023Dev)):
> > oracle.toplink.essentials.exceptions.DatabaseException
> > Internal Exception: java.sql.SQLException: [Oracle] #21 ORA-00942: table
> > or view does not exist
> > Error Code: 942
> > Call:UPDATE SEQUENCE SET SEQ_COUNT = SEQ_COUNT + 50 WHERE SEQ_NAME =
> > 'SEQ_GEN' Query:DataModifyQuery()
> > |#]
> >
> > [#|2005-11-03T09:56:40.974-0500|INFO|sun-appserver-pe9.0|javax.enterprise.system.stream.out|_ThreadID
> > =31;_ThreadName=p: thread-pool-1; w: 6;|Unexpection Exception :Exception
> > [TOPLINK-4002] (Oracle TopLink Essentials - 10g release 4 (10.1.4.0.0)
> > (Build 051023Dev)): oracle.toplink.essentials.exceptions.DatabaseException
> > Internal Exception: java.sql.SQLException: [Oracle] #21 ORA-00942: table
> > or view does not exist
> > Error Code: 942
> > Call:UPDATE SEQUENCE SET SEQ_COUNT = SEQ_COUNT + 50 WHERE SEQ_NAME =
> > 'SEQ_GEN'Query:DataModifyQuery()|#]
> >
> >
> >
> > Andrei Ilitchev wrote On 11/03/05 13:43,:
> >>>>Does Toplink support GeneratorType.IDENTITY?
> >>
> >> Yes it does.
> >>
> >>>>What is the expected DDL for the target table for various dbs?
> >>
> >> On Sybase, SqlServer, Informix, MySQL4 the PK is created as Identity:
> >> CREATE TABLE EMPLOYEE (EMP_ID NUMERIC(15) IDENTITY NOT NULL,...
> >>
> >> There is no Identity field notion in Oracle database, so one should use
> >> GeneratorType.SEQUENCE instead.
> >> However TopLink implementation allows using IDENTITY on Oracle too - the
> >> result is Oracle sequence
> >> named SEQ_GEN_SEQUENCE with default (for sequences in TopLink) increment
> >> 50.
> >> If you define sequence generator with this name you can specify another
> >> sequence name and preallocation value, for instance
> >> @SequenceGenerator(name="SEQ_GEN_SEQUENCE", sequenceName="SEQ",
> >> allocationSize=1)
> >> would cause creation of Oracle sequence named SEQ with increment 1.
> >>
> >> Currently TopLink doesn't support GeneratorType.IDENTITY for any other
> >> databases.
> >>
> >> Andrei
> >>
> >> ----- Original Message -----
> >> From: "Ming Zhang" <ming.zhang_at_Sun.COM>
> >> To: "Peter Krogh" <peter.krogh_at_oracle.com>
> >> Cc: "Mitesh Meswani" <mitesh.meswani_at_Sun.COM>; "Mike Keith"
> >> <michael.keith_at_oracle.com>; <ejb3-toplink-ext_at_Sun.COM>;
> >> <persistence_at_glassfish.dev.java.net>
> >> Sent: Wednesday, November 02, 2005 7:16 PM
> >> Subject: Re: Primary Key generation type IDENTITY
> >>
> >>
> >>
> >>>Hi Peter,
> >>>
> >>>Do you have any update for the following 2 questions?
> >>>Thanks,
> >>>Ming
> >>>
> >>>Mitesh Meswani wrote:
> >>>
> >>>
> >>>>Mike,
> >>>>Thanks for correcting. My original question below was not correct.
> >>>>
> >>>>Peter,
> >>>>The correct question this time. Does Toplink support
> >>>>GeneratorType.IDENTITY? What is the expected DDL for the target table
> >>>>for
> >>>>various dbs?
> >>>>
> >>>>Thanks,
> >>>>Mitesh
> >>>>
> >>>>Mike Keith wrote:
> >>>>
> >>>>
> >>>>>Sounds like there is some confusion around this issue. Maybe I can
> >>>>>help.
> >>>>>
> >>>>>- There is no IdentityGenerator in the spec. When the generation
> >>>>>type is set to IDENTITY then it means that an IDENTITY column, such
> >>>>>as is available in SQL Server and Sybase, is used. This is different
> >>>>>from SEQUENCE, which requires a database sequence be set up.
> >>>>>- When IDENTITY is used then the table must be generated to have an
> >>>>>IDENTITY column in it (e.g. in SQL Server it might look something like:
> >>>>>
> >>>>>CREATE TABLE Employee (
> >>>>> id int IDENTITY(10,2),
> >>>>> name varchar(50)
> >>>>>)
> >>>>>
> >>>>>The identifier attribute must be mapped to the identity column.
> >>>>>
> >>>>>-Mike
> >>>>>
> >>>>>
> >>>>>
> >>>>>>-----Original Message-----
> >>>>>>From: Mitesh Meswani [mailto:mitesh.meswani_at_Sun.COM]
> >>>>>>Sent: Thursday, October 20, 2005 1:56 PM
> >>>>>>To: Peter Krogh
> >>>>>>Cc: Ming Zhang; ejb3-toplink-ext_at_Sun.COM;
> >>>>>>persistence_at_glassfish.dev.java.net
> >>>>>>Subject: Re: Primary Key generation type IDENTITY
> >>>>>>
> >>>>>>
> >>>>>>Hi Peter,
> >>>>>>
> >>>>>>I will try to clarify the question on Ming's behalf:
> >>>>>>Does toplink support IdentityGenerator for generated pk values. If
> >>>>>>yes,
> >>>>>>what is the expected DDL for running against various dbs.
> >>>>>>
> >>>>>>Thanks,
> >>>>>>Mitesh
> >>>>>>
> >>>>>>Peter Krogh wrote:
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>>I am not sure that I fully understand your questions, but
> >>>>>>
> >>>>>>let me give
> >>>>>>
> >>>>>>
> >>>>>>>them a shot.
> >>>>>>>
> >>>>>>>1. Are the sequence name "SEQ_GEN_SEQUENCE" and its
> >>>>>>
> >>>>>>increment/initial
> >>>>>>
> >>>>>>
> >>>>>>>values changeable for IDENTITY type PK?
> >>>>>>>I think that this is what the SeqeunceGenerator annotation is for.
> >>>>>>>
> >>>>>>>2. Is there an IdentityGenerator annotation similar to
> >>>>>>>@SequenceGenerator? What's the usage? In case of @SequenceGenerator,
> >>>>>>>the above values can be set in its elements. For example:
> >>>>>>> @SequenceGenerator(name="mySequenceGenerator", sequenceName =
> >>>>>>>"SEQ_NAME", initialValue=1, allocationSize=1)
> >>>>>>>
> >>>>>>>Again, I believe that the correct one to use is the
> >>>>>>>SeqeunceGenerator. The table based sequencing is called
> >>>>>>
> >>>>>>TableGenerator.
> >>>>>>
> >>>>>>
> >>>>>>>The error that you are getting is because the allocation size is set
> >>>>>>>to 50. You must either set the increment by on your sequence to 50,
> >>>>>>>or change the allocation size using SequenceGenerator like you
> >>>>>>>indicated above.
> >>>>>>>
> >>>>>>>-----Original Message-----
> >>>>>>>*From:* Ming Zhang [mailto:ming.zhang_at_Sun.COM]
> >>>>>>>*Sent:* Thursday, October 20, 2005 12:38 PM
> >>>>>>>*To:* Peter Krogh
> >>>>>>>*Cc:* ejb3-toplink-ext_at_Sun.COM
> >>>>>>>*Subject:* Re: Primary Key generation type IDENTITY
> >>>>>>>
> >>>>>>> I an using DDL. Added the "create sequence" in it:
> >>>>>>> create table datatypes(ID INTEGER, shortData smallint, longData
> >>>>>>> number, floatData real,
> >>>>>>> sqldatedata date, utildatedata date, timeStampData timestamp(9),
> >>>>>>> integerData integer,
> >>>>>>> byteData number, booleanData number, characterData char(100),
> >>>>>>> CONSTRAINT DATATYPES_PK PRIMARY KEY (ID));
> >>>>>>>
> >>>>>>> create sequence SEQ_GEN_SEQUENCE START WITH 1 INCREMENT BY 1;
> >>>>>>>
> >>>>>>> Now I got "increment does not match its pre-allocation size":
> >>>>>>> Caused by: Exception [TOPLINK-7027] (Oracle TopLink Essentials -
> >>>>>>> 10g release 4 (10.1.4.0.0) (Build 051010Dev)):
> >>>>>>> oracle.toplink.essentials.exceptions.ValidationException
> >>>>>>> Exception Description: The sequence named [SEQ_GEN_SEQUENCE] is
> >>>>>>> setup incorrectly. Its increment does not match its
> >>>>>>> pre-allocation size.
> >>>>>>> at
> >>>>>>>
> >>>>>>
> >>>>>>oracle.toplink.essentials.exceptions.ValidationException.seque
> >>>>>>nceSetupIncorrectly(ValidationException.java:1200)
> >>>>>>
> >>>>>>
> >>>>>>> at
> >>>>>>>
> >>>>>>
> >>>>>>oracle.toplink.essentials.sequencing.StandardSequence.createVe
> >>>>>>ctor(StandardSequence.java:146)
> >>>>>>
> >>>>>>
> >>>>>>> ...
> >>>>>>>
> >>>>>>> But still have following questions:
> >>>>>>> 1. Are the sequence name "SEQ_GEN_SEQUENCE" and its
> >>>>>>> increment/initial values changeable for IDENTITY type PK?
> >>>>>>> 2. Is there an IdentityGenerator annotation similar to
> >>>>>>> @SequenceGenerator? What's the usage? In case of
> >>>>>>> @SequenceGenerator, the above values can be set in its elements.
> >>>>>>> For example:
> >>>>>>> @SequenceGenerator(name="mySequenceGenerator", sequenceName =
> >>>>>>> "SEQ_NAME", initialValue=1, allocationSize=1)
> >>>>>>>
> >>>>>>> Thanks,
> >>>>>>> Ming
> >>>>>>>
> >>>>>>>
> >>>>>>> Peter Krogh wrote:
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>> It appears that this sequence is not created on the DB.
> >>>>>>>>
> >>>>>>>> How are you creating this? Using the DDL generation?
> >>>>>>>
> >>>>>>Manually?
> >>>>>>
> >>>>>>
> >>>>>>>> Check the DB and see if that sequence is created
> >>>>>>>>
> >>>>>>>> -----Original Message-----
> >>>>>>>> *From:* Ming Zhang [mailto:ming.zhang_at_Sun.COM]
> >>>>>>>> *Sent:* Wednesday, October 19, 2005 8:54 PM
> >>>>>>>> *To:* ejb3-toplink-ext_at_Sun.COM
> >>>>>>>> *Subject:* Primary Key generation type IDENTITY
> >>>>>>>>
> >>>>>>>> Hello TopLink experts,
> >>>>>>>>
> >>>>>>>> I have some general questions regarding the IDENTITY PK
> >>>>>>>> generation type. How is the ID annotated in this
> >>>>>>>
> >>>>>>case and is
> >>>>>>
> >>>>>>
> >>>>>>>> there a IdentityGenerator annotation similar to
> >>>>>>>> @SequenceGenerator annotation? What's the specific
> >>>>>>>
> >>>>>>usage? How
> >>>>>>
> >>>>>>
> >>>>>>>> do we handle these in DDL?
> >>>>>>>>
> >>>>>>>> I tried @Id(generate = GeneratorType.IDENTITY) in
> >>>>>>>
> >>>>>>my apps and
> >>>>>>
> >>>>>>
> >>>>>>>> was able to compile deploy. But got following exception
> >>>>>>>> during runtime:
> >>>>>>>> Caused by: Exception [TOPLINK-4002] (Oracle TopLink
> >>>>>>>> Essentials - 10g release 4 (10.1.4.0.0) (Build 051010Dev)):
> >>>>>>>> oracle.toplink.essentials.exceptions.DatabaseException
> >>>>>>>> Internal Exception: java.sql.SQLException:
> >>>>>>>
> >>>>>>[sunm][Oracle JDBC
> >>>>>>
> >>>>>>
> >>>>>>>> Driver][Oracle]ORA-02289: *sequence does not exist*
> >>>>>>>> Error Code: 2289
> >>>>>>>> Call:SELECT SEQ_GEN_SEQUENCE.NEXTVAL FROM DUAL
> >>>>>>>> Query:ValueReadQuery()
> >>>>>>>> at
> >>>>>>>>
> >>>>>>>
> >>>>>>oracle.toplink.essentials.exceptions.DatabaseException.sqlExce
> >>>>>>ption(DatabaseException.java:310)
> >>>>>>
> >>>>>>
> >>>>>>>> at
> >>>>>>>>
> >>>>>>>
> >>>>>>oracle.toplink.essentials.internal.databaseaccess.DatabaseAcce
> >>>>>>ssor.basicExecuteCall(DatabaseAccessor.java:550)
> >>>>>>
> >>>>>>
> >>>>>>>> at
> >>>>>>>>
> >>>>>>>
> >>>>>>oracle.toplink.essentials.internal.databaseaccess.DatabaseAcce
> >>>>>>ssor.executeCall(DatabaseAccessor.java:436)
> >>>>>>
> >>>>>>
> >>>>>>>> Thanks,
> >>>>>>>> Ming
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> 6f4mWKmVZd/5GiAuNBf0Rw)--
> >>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>
> >>
> >>
> >
> >