Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] Error writing collection of entities to the database

em.persist() doesn't actually write directly to the database and calling it multiple times would have the same effect as calling persist on a list.
The Inserts do no occur until the em is flushed or the transaction committed.
--Gordon

krisusa123 wrote:
Hi Tom
Thanks for the reply. But, thats too much of I/O where it commits row by row rather than commiting a collection. I do understand that it needs to check referential integrity and database constraints.
 
Is there any way out of this?
 
Thanks
kris

f u cn rd ths, u cn gt a gd jb n cmptr prgrmmng

--- On Wed, 1/21/09, Tom Ware <tom.ware@xxxxxxxxxx> wrote:
From: Tom Ware <tom.ware@xxxxxxxxxx>
Subject: Re: [eclipselink-users] Error writing collection of entities to the database
To: krisusa123@xxxxxxxxx, "EclipseLink User Discussions" <eclipselink-users@xxxxxxxxxxx>
Date: Wednesday, January 21, 2009, 7:53 AM

Hi Kris,

  The code that uses UnitOfWork is not JPA code.  UnitOfWork is an EclipseLink
class and not necessary when using pure JPA.  Is there any particular reason you
have written that code?

  The rest of the code uses JPA APIs.

  The problem you are seeing is because you are trying to persist your array of
TestEtl as a whole instead of individually.   You can only call persist on
classes that are persistent.  List is not a persistent class.  The classes
stored in your list are the classes you want to persist.

  You should write code that iterates through your list and persists each
element individually.

-Tom

krisusa123 wrote:
> Hello Guys
> Now I have a new problem with my pure JPA implementation.
> I am trying to commit a collection (ArrayList of entity objects) rather
than an entity object and here is the error I am getting. Can I do this or is it
wrong?
>  Code also attached below.
>  Appreciate your help.
>  Exception in thread "main"
_java.lang.IllegalArgumentException_: Object: [com..entities.TestEtl@1da669c,
com.entities.TestEtl@186c730 <mailto:com.entities.TestEtl@186c730>,
com.entities.TestEtl@17f242c <mailto:com.entities.TestEtl@17f242c>] is not
a known entity type.
>  * *
> *public* *static* *boolean* saveData(EntityManagerFactory emf,
List<xx> Beans ) {
> 
> EntityManager entityManager = emf.createEntityManager();
> 
> UnitOfWork uow = ((EntityManagerImpl) entityManager).getUnitOfWork();
> 
> List<TestEtl> lm = *new* ArrayList<TestEtl>();
> 
> uow.registerAllObjects(lm);
> * *
> 
> *try* {
> 
> *for* (*int* i=0; i< Beans.size(); i++) {
> 
> TestEtl load = *new* TestEtl();
> 
> load.setCol1(Beans.get(i).getCol1());
> 
> load.setCol2(Beans.get(i).getCol2());
> lm.add(load);
> 
> } *catch* (Exception e) {
> 
> System./out/.println( "Error::" + e);
> 
> *return* *false*;
> 
> } *finally* {
> 
> entityManager.persist(lm);
> 
> uow.commit();
> 
> entityManager.close();
> 
> emf.close();
> }**
> 
> *return* *true*;
> 
> }
> 
> f u cn rd ths, u cn gt a gd jb n cmptr prgrmmng
> 
> --- On *Tue, 1/20/09, krisusa123 /<krisusa123@xxxxxxxxx>/* wrote:
> 
>     From: krisusa123 <krisusa123@xxxxxxxxx>
>     Subject: Re: [eclipselink-users] How to create EclipseLink Sessions,
>     ORM.xml files in J2SE environment
>     To: "EclipseLink User Discussions"
<eclipselink-users@xxxxxxxxxxx>
>     Date: Tuesday, January 20, 2009, 10:11 AM
> 
>     Hi Tim
>     What you said was pretty much true until yesterday. I had got
>     confused between pure JPA solution and EclipseLink specific
>     implementation.
>          But now, I have got the pure JPA solution working. Thanks to you
for
>     helping me finish that part.
>          Then I started trying to accomplish the same thing using
EclipseLink
>     only API by using sessions.xml and stuff.
>          I am trying to understand how to get the second one (EclipseLink
>     specific one) working. Thats where I got this exception:
>          Exception Description: Missing descriptor for [class
com.xx.TestEtl].
>     Verify that the descriptor has been properly registered with the
>     Session.
> 
> 
>     f u cn rd ths, u cn gt a gd jb n cmptr prgrmmng
> 
>     --- On *Tue, 1/20/09, Tim Hollosy /<hollosyt@xxxxxxxxx>/* wrote:
> 
>         From: Tim Hollosy <hollosyt@xxxxxxxxx>
>         Subject: Re: [eclipselink-users] How to create EclipseLink
>         Sessions, ORM.xml files in J2SE environment
>         To: "EclipseLink User Discussions"
<eclipselink-users@xxxxxxxxxxx>
>         Date: Tuesday, January 20, 2009, 9:27 AM
> 
>         Also be aware, the example on my blog uses a pure JPA approach
>         (mostly) the only native class I use is UnitOfWork. I think Kris
is
>         kind of confused between the two. But just bare in mind, if
you're
>         following my example/my code make sure you realize you're
working in a
>         Pure JPA environment.
> 
>         ./tch
> 
> 
> 
>         On Tue, Jan 20, 2009 at 9:06 AM, Tom Ware
<tom.ware@xxxxxxxxxx> wrote:
>         > Hi Kris,
>         >
>         >  This error generally occurs because for some reason the
metadata for your
>         > TestEtl class is not available to EclipseLink and you are
treating it as
>         > persistent.
>         >
>         >  Depending on how you are configured, the metadata can come
from different
>         > places.
>         >
>         >  If you are using a pure JPA solution, it will be derived
from
>         Annotations,
>         > orm.xml and your persistence.xml file.
>         >
>         >  If you are using the EclipseLink-proprietary APIs, it will
be derived
>         from
>         > your sessions.xml and from either your project class or your
deployment
>         > xml(generated with the EclipseLink Mapping Workbench)
>         >
>         >  Perhaps you can explain a little more about which of these
files you are
>         > using and what you are doing when you see the error.
>         >
>         > -Tom
>         >
>         > krisUSA123 wrote:
>         >>
>         >> Based on EclipseTeam's suggestions, I was able to
create
>         sessions.xml file
>         >> and was trying to create a CRUD operation.
>         >> May I know what this error means:
>         >>
>         >> Exception Description: Missing descriptor for [class
com.xx.TestEtl].
>         >> Verify that the descriptor has been properly registered
with the
>         Session.
>         >>
>         >> How do I fix it?
>         >>
>         >> Appreciate your help.
>         >> Thanks guys for being responsive to my earlier post.
>         >>
>         >> Thanks
>         >> Kris
>         >
>         > _______________________________________________
>         > eclipselink-users mailing list
>         > eclipselink-users@xxxxxxxxxxx
>         > https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>         >
>         _______________________________________________
>         eclipselink-users mailing list
>         eclipselink-users@xxxxxxxxxxx
>         https://dev.eclipse.org/mailman/listinfo/eclipselink-users
> 
> 
>     _______________________________________________
>     eclipselink-users mailing list
>     eclipselink-users@xxxxxxxxxxx
>     https://dev.eclipse.org/mailman/listinfo/eclipselink-users
> 
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> eclipselink-users mailing list
> eclipselink-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
          


_______________________________________________ eclipselink-users mailing list eclipselink-users@xxxxxxxxxxx https://dev.eclipse.org/mailman/listinfo/eclipselink-users

Back to the top