Sorry, I did not see that your child class was inherited from another class.
I tried using inheritance with JDO some times ago.
Unsuccessfully : this is not supported by JDO yet.

See 
http://code.google.com/intl/fr-FR/appengine/docs/java/datastore/dataclasses.
html#Inheritance  


On 24/09/10 01:30, "lisandrodc" <lisandr...@gmail.com> wrote:

> Hi!Cyrille I add a primary key in my child class:
> 
> @PersistenceCapable(identityType =
> IdentityType.APPLICATION,detachable="true")
> public class RegFechaUsuario extends Fecha  {
> @PrimaryKey
> @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
> private Key id;
> @Persistent
> private int puntos;
> @Persistent
> private Long idUsuarioFecha;
> @Persistent
> private Long idFechaOriginal;
> 
> 
> And the exception is:
> 
>     Error in meta-data for model.RegFechaUsuario: More than one
> primary key field.
> 
> Caused by:
> 
> Error in meta-data for model.RegFechaUsuario: More than one primary
> key field.
> org.datanucleus.store.appengine.MetaDataValidator
> $DatastoreMetaDataException: Error in meta-data for
> model.RegFechaUsuario: More than one primary key field.
> at
> org.datanucleus.store.appengine.MetaDataValidator.validatePrimaryKey(MetaDataV
> alidator.java:
> 416)
> at
> org.datanucleus.store.appengine.MetaDataValidator.validate(MetaDataValidator.j
> ava:
> 120)
> at
> org.datanucleus.store.appengine.DatastoreManager.validateMetaDataForClass(Data
> storeManager.java:
> 766)
> at
> org.datanucleus.store.appengine.DatastorePersistenceHandler.insertPreProcess(D
> atastorePersistenceHandler.java:
> 328)
> at
> org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObjects(Data
> storePersistenceHandler.java:
> 251)
> at
> org.datanucleus.store.appengine.BatchPutManager.processBatchState(BatchPutMana
> ger.java:
> 35)
> at
> org.datanucleus.store.appengine.BatchManager.finish(BatchManager.java:
> 54)
> at org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManager
> $BatchManagerWrapper.call(DatastoreJDOPersistenceManager.java:127)
> at org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManager
> $BatchManagerWrapper.access$200(DatastoreJDO
> 
> On 23 sep, 05:25, Cyrille Vincey <crll...@gmail.com> wrote:
>> There is no primary key in your child class.
>> Add one.
>> 
>> On 23/09/10 04:40, "lisandrodc" <lisandr...@gmail.com> wrote:
>> 
>> 
>> 
>>> Hi ! I have a problem when persist a chid class.
>>> The parent class:
>> 
>>> @PersistenceCapable
>> 
>>> @Inheritance(strategy = InheritanceStrategy.SUBCLASS_TABLE)
>>> public  abstract class Fecha   {
>> 
>>> @PrimaryKey
>>> @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
>>> private Key id;
>>> @Persistent
>>> private String nombre;
>>> @Persistent
>>> private Date fechaIni;
>>> @Persistent
>>> private Date fechaFin;
>> 
>>> @Persistent(defaultFetchGroup = "true")
>>> List<Partido> partidos;
>> 
>>> private Long id2;
>> 
>>> private Long kind;
>> 
>>> The child class:
>>> @PersistenceCapable(identityType =
>>> IdentityType.APPLICATION,detachable="true")
>>> public class RegFechaUsuario extends Fecha  {
>> 
>>> @Persistent
>>> private int puntos;
>>> @Persistent
>>> private Long idUsuarioFecha;
>>> @Persistent
>>> private Long idFechaOriginal;
>> 
>>> The method at persist:
>> 
>>> public void crearRegFechaUsuario(RegFechaUsuario regFechaUsuario) {
>>>         //regFechaUsuario is an object initialized
>>> Transaction tx = pm.currentTransaction();
>>> try {
>>> tx.begin();
>> 
>>> pm.makePersistentAll(regFechaUsuario);
>>>                        //here is the exception
>>> tx.commit();
>>> } finally {
>>> // pm.close();
>>> if (tx.isActive()) {
>>> tx.rollback();
>>> }
>>> }
>> 
>>> }
>> 
>>> And the exception is (internal error of the library of google apps or
>>> datanucleus), the cast:
>> 
>>> Problem accessing /Prode/JugarFecha.action. Reason:
>> 
>>>     java.lang.Long cannot be cast to java.lang.String
>> 
>>> Caused by:
>> 
>>> java.lang.ClassCastException: java.lang.Long cannot be cast to
>>> java.lang.String
>>> at
>>> org.datanucleus.store.appengine.DatastoreRelationFieldManager.checkForParent
>>> Sw
>>> itch(DatastoreRelationFieldManager.java:
>>> 202)
>>> at org.datanucleus.store.appengine.DatastoreRelationFieldManager
>>> $1.setObjectViaMapping(DatastoreRelationFieldManager.java:133)
>>> at org.datanucleus.store.appengine.DatastoreRelationFieldManager
>>> $1.apply(DatastoreRelationFieldManager.java:112)
>>> at
>>> org.datanucleus.store.appengine.DatastoreRelationFieldManager.storeRelations
>>> (D
>>> atastoreRelationFieldManager.java:
>>> 81)
>>> at
>>> org.datanucleus.store.appengine.DatastoreFieldManager.storeRelations(Datasto
>>> re
>>> FieldManager.java:
>>> 955)
>>> at
>>> org.datanucleus.store.appengine.DatastorePersistenceHandler.storeRelations(D
>>> at
>>> astorePersistenceHandler.java:
>>> 546)
>>> at
>>> org.datanucleus.store.appengine.DatastorePersistenceHandler.insertPostProces
>>> s(
>>> DatastorePersistenceHandler.java:
>>> 304)
>>> at
>>> org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObjects(Da
>>> ta
>>> storePersistenceHandler.java:
>>> 256)
>>> at
>>> org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObject(Dat
>>> as
>>> torePersistenceHandler.java:
>>> 240)
>>> at
>>> org.datanucleus.state.JDOStateManagerImpl.internalMakePersistent(JDOStateMan
>>> ag
>>> erImpl.java:
>>> 3185)
>>> at
>>> org.datanucleus.state.JDOStateManagerImpl.makePersistent(JDOStateManagerImpl
>>> .j
>>> ava:
>>> 3161)
>>> at
>> 
>> org.datanucleus.ObjectManagerImpl.persistObjectInternal(ObjectManagerImpl.jav
>> a>
>> :> 1298)
>>> at
>>> org.datanucleus.sco.SCOUtils.validateObjectForWriting(SCOUtils.java:
>>> 1476)
>>> at
>>> org.datanucleus.store.mapped.scostore.ElementContainerStore.validateElementF
>>> or
>>> Writing(ElementContainerStore.java:
>>> 380)
>>> at
>>> org.datanucleus.store.mapped.scostore.FKListStore.validateElementForWriting(
>>> FK
>>> ListStore.java:
>>> 609)
>>> at
>> 
>> org.datanucleus.store.mapped.scostore.FKListStore.internalAdd(FKListStore.jav
>> a>
>> :
>> 
>>> 344)
>>> at
>>> org.datanucleus.store.appengine.DatastoreFKListStore.internalAdd(DatastoreFK
>>> Li
>>> stStore.java:
>>> 146)
>>> at
>>> org.datanucleus.store.mapped.scostore.AbstractListStore.addAll(AbstractListS
>>> to
>>> re.java:
>>> 128)
>>> at
>>> org.datanucleus.store.mapped.mapping.CollectionMapping.postInsert(Collection
>>> Ma
>>> pping.java:
>>> 157)
>>> at
>>> org.datanucleus.store.appengine.DatastoreRelationFieldManager.runPostInsertM
>>> ap
>>> pingCallbacks(DatastoreRelationFieldManager.java:
>>> 217)
>>> at
>>> org.datanucleus.store.appengine.DatastoreRelationFieldManager.access
>>> $200(DatastoreRelationFieldManager.java:48)
>>> at org.datanucleus.store.appengine.DatastoreRelationFieldManager
>>> $1.apply(DatastoreRelationFieldManager.java:116)
>>> at
>>> org.datanucleus.store.appengine.DatastoreRelationFieldManager.storeRelations
>>> (D
>>> atastoreRelationFieldManager.java:
>>> 81)
>>> at
>>> org.datanucleus.store.appengine.DatastoreFieldManager.storeRelations(Datasto
>>> re
>>> FieldManager.java:
>>> 955)
>>> at
>>> org.datanucleus.store.appengine.DatastorePersistenceHandler.storeRelations(D
>>> at
>>> astorePersistenceHandler.java:
>>> 546)
>>> at
>>> org.datanucleus.store.appengine.DatastorePersistenceHandler.insertPostProces
>>> s(
>>> DatastorePersistenceHandler.java:
>>> 304)
>>> at
>>> org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObjects(Da
>>> ta
>>> storePersistenceHandler.java:
>>> 256)
>>> at
>>> org.datanucleus.store.appengine.BatchPutManager.processBatchState(BatchPutMa
>>> na
>>> ger.java:
>>> 35)
>>> at
>>> org.datanucleus.store.appengine.BatchManager.finish(BatchManager.java:
>>> 54)
>>> at org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManager
>>> $BatchManagerWrapper.call(DatastoreJDOPersistenceManager.java:127)
>>> at org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManager
>>> $BatchManagerWrapper.access$200(DatastoreJDOPersistenceManager.java:
>>> 121)
>>> at
>>> org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManager.makePersi
>>> st
>>> entAll(DatastoreJDOPersistenceManager.java:
>>> 98)
>>> at
>>> org.datanucleus.jdo.JDOPersistenceManager.makePersistentAll(JDOPersistenceMa
>>> na
>>> ger.java:
>>> 703)
>>> at
>>> controllers.ControladorFecha.crearRegFechaUsuario(ControladorFecha.java:
>>> 157)
>>> at
>>> struts.action.RegistrarJugada.crearFechaParaRegistro(RegistrarJugada.java:
>>> 86)
>>> at struts.action.RegistrarJugada.registrarJugada(RegistrarJugada.java:
>>> 71)
>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
>>> 39)
>>> at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
>>> .j
>>> ava:
>>> 25)
>>> at java.lang.reflect.Method.invoke(Method.java:597)
>>> at
>>> com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.
>>> ja
>>> va:
>>> 100)
>>> at
>>> com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionIn
>>> vo
>>> cation.java:
>>> 441)
>>> at
>>> com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActi
>>> on
>>> Invocation.java:
>>> 280)
>>> at
>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati
>>> on
>>> .java:
>>> 243)
>>> at
>>> com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(D
>>> ef
>>> aultWorkflowInterceptor.java:
>>> 165)
>>> at
>>> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Method
>>> Fi
>>> lterInterceptor.java:
>>> 87)
>>> at
>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati
>>> on
>>> .java:
>>> 237)
>>> at
>>> com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(Validati
>>> on
>>> Interceptor.java:
>>> 252)
>>> at
>>> org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.do
>>> In
>>> tercept(AnnotationValidationInterceptor.java:
>>> 68)
>>> at
>>> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Method
>>> Fi
>>> lterInterceptor.java:
>>> 87)
>>> at
>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati
>>> on
>>> .java:
>>> 237)
>>> at
>>> com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(Con
>>> ve
>>> rsionErrorInterceptor.java:
>>> 122)
>>> at
>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati
>>> on
>>> .java:
>>> 237)
>>> at
>>> com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(Parame
>>> te
>>> rsInterceptor.java:
>>> 195)
>>> at
>>> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Method
>>> Fi
>>> lterInterceptor.java:
>>> 87)
>>> at
>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati
>>> on
>>> .java:
>>> 237)
>>> at
>>> com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(Parame
>>> te
>>> rsInterceptor.java:
>>> 195)
>>> at
>>> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(Method
>>> Fi
>>> lterInterceptor.java:
>>> 87)
>>> at
>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati
>>> on
>>> .java:
>>> 237)
>>> at
>>> com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(St
>>> at
>>> icParametersInterceptor.java:
>>> 179)
>>> at
>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati
>>> on
>>> .java:
>>> 237)
>>> at
>>> org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectI
>>> nt
>>> erceptor.java:
>>> 75)
>>> at
>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati
>>> on
>>> .java:
>>> 237)
>>> at
>>> org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterce
>>> pt
>>> or.java:
>>> 94)
>>> at
>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati
>>> on
>>> .java:
>>> 237)
>>> at
>>> org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInt
>>> er
>>> ceptor.java:
>>> 235)
>>> at
>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati
>>> on
>>> .java:
>>> 237)
>>> at
>>> com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDr
>>> iv
>>> enInterceptor.java:
>>> 89)
>>> at
>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati
>>> on
>>> .java:
>>> 237)
>>> at
>>> com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(S
>>> co
>>> pedModelDrivenInterceptor.java:
>>> 130)
>>> at
>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati
>>> on
>>> .java:
>>> 237)
>>> at
>>> org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(Debu
>>> gg
>>> ingInterceptor.java:
>>> 267)
>>> at
>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati
>>> on
>>> .java:
>>> 237)
>>> at
>>> com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingIn
>>> te
>>> rceptor.java:
>>> 126)
>>> at
>>> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocati
>>> on
>>> .java:
>>> 237)
>>> at
>> 
>> ...
>> 
>> leer más »


-- 
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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to