Hi Roberto,

@ElementCollection annotation have to be used to contain embedded entities,
therefore you're have to be sure that PositioningType class is annotated
with @Embeddable.

 The next example works fine for me:

//Class Product
@ElementCollection(fetch = FetchType.EAGER)
 public Set<Rate> rates;

//Class Rate
@Embeddable
public class Rate {
   public String name;
}


Regards.


2012/8/30 roberto_sc <[email protected]>

> No opinions at all? Does it look like that I'm doing the right thing?
> I just found out that it also doesn't work for a list of integers,
> possibly any collection of any simple type:
>
> @ElementCollection
> @Extension(vendorName = "datanucleus", key = "gae.unindexed", value = "true")
> //private List<PositioningType> bestPositionings = new 
> ArrayList<PositioningType>();
> private List<Integer> bestPositionings;
>
>
> Results in:
>
> Caused by: org.datanucleus.exceptions.NucleusUserException: The MetaData for 
> the element class "java.lang.Integer" of the collection field 
> "com.olympya.datamodel.model.Player.bestPositionings" was not found.
>
> at 
> com.google.appengine.datanucleus.scostore.AbstractFKStore.<init>(AbstractFKStore.java:120)
>
> at 
> com.google.appengine.datanucleus.scostore.FKListStore.<init>(FKListStore.java:83)
>
> at 
> com.google.appengine.datanucleus.DatastoreManager.newFKListStore(DatastoreManager.java:472)
>
> at 
> org.datanucleus.store.mapped.MappedStoreManager.getBackingStoreForCollection(MappedStoreManager.java:798)
>
> at 
> org.datanucleus.store.mapped.MappedStoreManager.getBackingStoreForField(MappedStoreManager.java:709)
>
> at org.datanucleus.store.types.sco.backed.ArrayList.<init>(ArrayList.java:99)
>
>
> :(
>
> Em quarta-feira, 29 de agosto de 2012 13h46min03s UTC-3, roberto_sc
> escreveu:
>
>>
>> I'm moving from JPA 1 to JPA 2 in my Gooogle App Engine project, and for
>> that I changed the annotations for collections of enums, like this case:
>>
>> //  @OneToMany(cascade = CascadeType.ALL) // JPA 1
>>     @ElementCollection(targetClass**=PositioningType.class)
>>
>>     private List<PositioningType> bestPositionings;
>>
>>
>> PositioningType is an enum that is not annotated.
>>
>> That code is giving me the following exception:
>>
>> javax.persistence.PersistenceE**xception: The MetaData for the element class 
>> "com.olympya.datamodel.model.**PositioningType" of the collection field 
>> "com.olympya.datamodel.model.**Player.bestPositionings" was not found.
>>
>> at 
>> org.datanucleus.api.jpa.Nucleu**sJPAHelper.getJPAExceptionForN**ucleusException(NucleusJPAHelp**er.java:302)
>>
>> at 
>> org.datanucleus.api.jpa.JPAEnt**ityTransaction.commit(JPAEntit**yTransaction.java:122)
>>
>> at com.olympya.Services.mergeUser**(Services.java:102)
>> ...
>> Caused by: org.datanucleus.exceptions.Nuc**leusUserException: The MetaData 
>> for the element class "com.olympya.datamodel.model.**PositioningType" of the 
>> collection field "com.olympya.datamodel.model.**Player.bestPositionings" was 
>> not found.
>>
>> at 
>> com.google.appengine.datanucle**us.scostore.AbstractFKStore.<i**nit>(AbstractFKStore.java:120)
>>
>> at 
>> com.google.appengine.datanucle**us.scostore.FKListStore.<init>**(FKListStore.java:83)
>>
>> at 
>> com.google.appengine.datanucle**us.DatastoreManager.newFKListS**tore(DatastoreManager.java:472**)
>>
>> at 
>> org.datanucleus.store.mapped.M**appedStoreManager.getBackingSt**oreForCollection(MappedStoreMa**nager.java:798)
>>
>> at 
>> org.datanucleus.store.mapped.M**appedStoreManager.getBackingSt**oreForField(MappedStoreManager**.java:709)
>>
>> at 
>> org.datanucleus.store.types.sc**o.backed.ArrayList.<init>(Arra**yList.java:99)
>>
>> at sun.reflect.NativeConstructorA**ccessorImpl.newInstance0(Nativ**e Method)
>> ...
>>
>>  --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/google-appengine/-/M9bihLLrsTAJ.
>
> 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?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" 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?hl=en.

Reply via email to