Hi,

I am new to AppEngine, and I am getting an exception when I try to
initialize a persistent class.

First, I have two questions:

1) Can we use abstract classes for persistent objects? My code looks
very simple:

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class StudentImpl extends StudentAbstract implements Student {
        @Persistent
        private String name;

        public StudentImpl(Key studentKey, String name){
             super(studentKey);
             this.name = name;
        }

       .....etc, etc
}

Notice that the primary Key is held in the abstract super class. Is
this ok?

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public abstract class StudentAbstract{

        @PrimaryKey
        @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
        private Key objectKey;
        public StudentAbstract(Key objectId){
              this.objectKey = objectId;
        }
        ......etc, etc
}

Is this design feasible?

2) If my declarations are correct, then Why do I get the following
exception when I try to create an object.

Caused by: java.lang.NoSuchMethodError:
edu.isi.tie21.star.server.db.objects.STARDBObjectAbstract.jdoGetManagedFieldCount
()I
        at
edu.isi.tie21.star.server.db.objects.StudentImpl.__jdoGetInheritedFieldCount
(StudentImpl.java)
        at edu.isi.tie21.star.server.db.objects.StudentImpl.<clinit>
(StudentImpl.java)
        at edu.isi.tie21.star.server.StudentServiceImpl.addStudent
(StudentServiceImpl.java:150)

The code that generates the error is:
pm.makePersistent(
                                        new StudentImpl(
                                                        KeyFactory.createKey(
                                                                        
StudentImpl.class.getSimpleName(), s.getName()),
                                                                        
s.getName()));

I have searched the web, and it seems the error is related to the way
the VM initializes objects with super classes (in my case I have an
abstract class). The problem is that the VM is trying to access the
abstract class with the jdoGetManagedFieldCount() method before it is
created. is this really the problem? Is there a way around it?

Thanks a lot, I appreciate any help on this issue.

RSN



--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to