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

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


Back to the top