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.