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

There is some documentation of Batch Writing in the link below, but it is not clear to me that is what you are looking for. Can you please provide the following:

1. The code you are running now
2. The output you are getting
3. An explanation of how you want it to be different

The reason I ask, is that the code that if you are still using the code you provided earlier in this thread, I am not surprised you are getting unexpected behavior that includes extra trips to the database.

Here's the doc link:

http://wiki.eclipse.org/Optimizing_the_EclipseLink_Application_(ELUG)#How_to_Use_Batch_Writing_for_Optimization

krisusa123 wrote:
Hi Tim and Tom
Thanks for the replies. I see "batch reading" and do not find anything about on "batch updating" or "batch writing" in the wiki search. Can you help me with that? Thanks
Kris

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

--- On *Wed, 1/21/09, Tim Hollosy /<hollosyt@xxxxxxxxx>/* wrote:

    From: Tim Hollosy <hollosyt@xxxxxxxxx>
    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, 12:29 PM

    Yes, it's called batch updating. Check the wiki.

    ./tch



    On Wed, Jan 21, 2009 at 11:43 AM, krisusa123 <krisusa123@xxxxxxxxx>
    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
    >
    >



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

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


Back to the top