you don't need an aditional key your problem is that you already have a @PrimaryKey in Fecha so you don't need it in RegFechaUsuario.
Cheers, Fernando On Thu, Sep 23, 2010 at 8:30 PM, 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(MetaDataValidator.java: > 416) > at > > org.datanucleus.store.appengine.MetaDataValidator.validate(MetaDataValidator.java: > 120) > at > > org.datanucleus.store.appengine.DatastoreManager.validateMetaDataForClass(DatastoreManager.java: > 766) > at > > org.datanucleus.store.appengine.DatastorePersistenceHandler.insertPreProcess(DatastorePersistenceHandler.java: > 328) > at > > org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObjects(DatastorePersistenceHandler.java: > 251) > at > > org.datanucleus.store.appengine.BatchPutManager.processBatchState(BatchPutManager.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.checkForParentSw > > > 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(Datastore > > > FieldManager.java: > > > 955) > > > at > > > > org.datanucleus.store.appengine.DatastorePersistenceHandler.storeRelations(Dat > > > astorePersistenceHandler.java: > > > 546) > > > at > > > > org.datanucleus.store.appengine.DatastorePersistenceHandler.insertPostProcess( > > > DatastorePersistenceHandler.java: > > > 304) > > > at > > > > org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObjects(Data > > > storePersistenceHandler.java: > > > 256) > > > at > > > > org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObject(Datas > > > torePersistenceHandler.java: > > > 240) > > > at > > > > org.datanucleus.state.JDOStateManagerImpl.internalMakePersistent(JDOStateManag > > > erImpl.java: > > > 3185) > > > at > > > > org.datanucleus.state.JDOStateManagerImpl.makePersistent(JDOStateManagerImpl.j > > > ava: > > > 3161) > > > at > > > > > org.datanucleus.ObjectManagerImpl.persistObjectInternal(ObjectManagerImpl.java> > > :> 1298) > > > at > > > org.datanucleus.sco.SCOUtils.validateObjectForWriting(SCOUtils.java: > > > 1476) > > > at > > > > org.datanucleus.store.mapped.scostore.ElementContainerStore.validateElementFor > > > 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.java> > > : > > > > > 344) > > > at > > > > org.datanucleus.store.appengine.DatastoreFKListStore.internalAdd(DatastoreFKLi > > > stStore.java: > > > 146) > > > at > > > > org.datanucleus.store.mapped.scostore.AbstractListStore.addAll(AbstractListSto > > > re.java: > > > 128) > > > at > > > > org.datanucleus.store.mapped.mapping.CollectionMapping.postInsert(CollectionMa > > > pping.java: > > > 157) > > > at > > > > org.datanucleus.store.appengine.DatastoreRelationFieldManager.runPostInsertMap > > > 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(Datastore > > > FieldManager.java: > > > 955) > > > at > > > > org.datanucleus.store.appengine.DatastorePersistenceHandler.storeRelations(Dat > > > astorePersistenceHandler.java: > > > 546) > > > at > > > > org.datanucleus.store.appengine.DatastorePersistenceHandler.insertPostProcess( > > > DatastorePersistenceHandler.java: > > > 304) > > > at > > > > org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObjects(Data > > > storePersistenceHandler.java: > > > 256) > > > 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(DatastoreJDOPersistenceManager.java: > > > 121) > > > at > > > > org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManager.makePersist > > > entAll(DatastoreJDOPersistenceManager.java: > > > 98) > > > at > > > > org.datanucleus.jdo.JDOPersistenceManager.makePersistentAll(JDOPersistenceMana > > > 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(DefaultActionInvo > > > cation.java: > > > 441) > > > at > > > > com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultAction > > > Invocation.java: > > > 280) > > > at > > > > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation > > > .java: > > > 243) > > > at > > > > com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(Def > > > aultWorkflowInterceptor.java: > > > 165) > > > at > > > > com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFi > > > lterInterceptor.java: > > > 87) > > > at > > > > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation > > > .java: > > > 237) > > > at > > > > com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(Validation > > > Interceptor.java: > > > 252) > > > at > > > > org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIn > > > tercept(AnnotationValidationInterceptor.java: > > > 68) > > > at > > > > com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFi > > > lterInterceptor.java: > > > 87) > > > at > > > > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation > > > .java: > > > 237) > > > at > > > > com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(Conve > > > rsionErrorInterceptor.java: > > > 122) > > > at > > > > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation > > > .java: > > > 237) > > > at > > > > com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(Paramete > > > rsInterceptor.java: > > > 195) > > > at > > > > com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFi > > > lterInterceptor.java: > > > 87) > > > at > > > > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation > > > .java: > > > 237) > > > at > > > > com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(Paramete > > > rsInterceptor.java: > > > 195) > > > at > > > > com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFi > > > lterInterceptor.java: > > > 87) > > > at > > > > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation > > > .java: > > > 237) > > > at > > > > com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(Stat > > > icParametersInterceptor.java: > > > 179) > > > at > > > > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation > > > .java: > > > 237) > > > at > > > > org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInt > > > erceptor.java: > > > 75) > > > at > > > > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation > > > .java: > > > 237) > > > at > > > > org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxIntercept > > > or.java: > > > 94) > > > at > > > > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation > > > .java: > > > 237) > > > at > > > > org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInter > > > ceptor.java: > > > 235) > > > at > > > > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation > > > .java: > > > 237) > > > at > > > > com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDriv > > > enInterceptor.java: > > > 89) > > > at > > > > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation > > > .java: > > > 237) > > > at > > > > com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(Sco > > > pedModelDrivenInterceptor.java: > > > 130) > > > at > > > > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation > > > .java: > > > 237) > > > at > > > > org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(Debugg > > > ingInterceptor.java: > > > 267) > > > at > > > > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation > > > .java: > > > 237) > > > at > > > > com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInte > > > rceptor.java: > > > 126) > > > at > > > > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation > > > .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<google-appengine-java%2bunsubscr...@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/google-appengine-java?hl=en. > > -- 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.