RE: Help: getting NPE at ObjectStoreGraphDiff.preprocess

From: Eric Floehr (efloeh..oxicom.com)
Date: Wed Mar 07 2007 - 08:22:12 EST

  • Next message: Andrus Adamchik: "Re: AW: Help: getting NPE at ObjectStoreGraphDiff.preprocess"

    Thanks for the help, Peter! However, when I change:

    MyType type = (MyType) context.newObject(MyType.class);

    to:

    MyType type = (MyType) context. createAndRegisterNewObject(MyType.class);

    I still end up with the same NPE:

    Exception in thread "main" java.lang.NullPointerException
            at org.apache.cayenne.access.ObjectStoreGraphDiff.preprocess(ObjectStoreGraphDiff.java:184)
            at org.apache.cayenne.access.ObjectStoreGraphDiff.<init>(ObjectStoreGraphDiff.java:53)
            at org.apache.cayenne.access.ObjectStore.getChanges(ObjectStore.java:496)
            at org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:1208)
            at org.apache.cayenne.access.DataContext.commitChanges(DataContext.java:1130)
    ...

    -Eric

    -----Original Message-----
    From: Peter Schröder [mailto:Peter.Schroede..reenet-ag.de]
    Sent: Wednesday, March 07, 2007 2:20 AM
    To: use..ayenne.apache.org
    Subject: AW: Help: getting NPE at ObjectStoreGraphDiff.preprocess

    i am not quite sure, but i think that you have to use

    context.createAndRegister(MyType.class);

    instead of

    context.newObject(MyType.class);

    -----Ursprüngliche Nachricht-----
    Von: Eric Floehr [mailto:efloeh..oxicom.com]
    Gesendet: Dienstag, 6. März 2007 19:37
    An: use..ayenne.apache.org
    Betreff: Help: getting NPE at ObjectStoreGraphDiff.preprocess

    Hi!

     

    I am new to Cayenne, and am having some problems. I have been able to
    populate some DB records, but when I try to set up a relationship, I get
    an NPE on the commit. I am using Cayenne 2.0.2.

     

    Here is the essential code (with some names changed to protect the
    innocent):

     

    MyType type = (MyType) context.newObject(MyType.class);

    type.setObjectId(new ObjectId(MyType.class.getSimpleName(),
    MyType.MYTYPE_ID_PK_COLUMN, 1));

    type.setName("MyName");

    MyCategory category = (MyCategory)DataObjectUtils.objectForPK(context,
    MyCategory.class, 1);

    type.setMyCategory(category);

    context.commitChanges();

     

    The MyType table has fields mytype_id (the primary key), name, and a
    mycategory_id (foreign key to the mycategory table). I am creating a
    new "MyType" object with a mytype_id of 1, name of "MyName", and
    pointing to a Category object, that is already in the database, with a
    primary key of 1.

     

    When commitChanges() runs, I get:

     

    Exception in thread "main" java.lang.NullPointerException

          at
    org.apache.cayenne.access.ObjectStoreGraphDiff.preprocess(ObjectStoreGra
    phDiff.java:184)

          at
    org.apache.cayenne.access.ObjectStoreGraphDiff.<init>(ObjectStoreGraphDi
    ff.java:53)

          at
    org.apache.cayenne.access.ObjectStore.getChanges(ObjectStore.java:496)

          at
    org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:120
    8)

          at
    org.apache.cayenne.access.DataContext.commitChanges(DataContext.java:113
    0)

          at
    com.boxicom.server.db.CreateDb.testStreamTypeAdd(CreateDb.java:96)

          at com.boxicom.server.db.CreateDb.main(CreateDb.java:105)

     

    Can anyone help me determine what is going wrong?

     

    Thanks much!

    Eric

     



    This archive was generated by hypermail 2.0.0 : Wed Mar 07 2007 - 08:23:06 EST