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.

Reply via email to