NullPointerException for ManyToOne in generic Embeddable

View: New views
9 Messages — Rating Filter:   Alert me  

NullPointerException for ManyToOne in generic Embeddable

by jml83 () :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I get the following exception when trying to process an Embeddable with a generic ManyToOne relationship using the built in org.eclipse.jpt.eclipselink.core.ddlgen.Main class in Eclipse Galileo:

Caused by: java.lang.NullPointerException
        at org.eclipse.persistence.internal.jpa.metadata.accessors.objects.MetadataAnnotatedElement.setAnnotatedElement(MetadataAnnotatedElement.java:559)
        at org.eclipse.persistence.internal.jpa.metadata.accessors.objects.MetadataAnnotatedElement.<init>(MetadataAnnotatedElement.java:90)
        at org.eclipse.persistence.internal.jpa.metadata.accessors.objects.MetadataClass.<init>(MetadataClass.java:32)
        at org.eclipse.persistence.internal.jpa.metadata.accessors.objects.MetadataAnnotatedElement.isEmbedded(MetadataAnnotatedElement.java:359)
        at org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.buildAccessor(ClassAccessor.java:261)
        at org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.processAccessorFields(ClassAccessor.java:577)
        at org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.addAccessors(ClassAccessor.java:239)
        at org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.processAccessors(ClassAccessor.java:633)
        at org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EmbeddableAccessor.process(EmbeddableAccessor.java:85)
        at org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.EmbeddedAccessor.processEmbeddableClass(EmbeddedAccessor.java:345)
        at org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.EmbeddedAccessor.process(EmbeddedAccessor.java:134)
        at org.eclipse.persistence.internal.jpa.metadata.MetadataDescriptor.processAccessors(MetadataDescriptor.java:1082)
        at org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.processAccessors(ClassAccessor.java:636)
        at org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EntityAccessor.processAccessors(EntityAccessor.java:611)
        at org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EntityAccessor.process(EntityAccessor.java:530)
        at org.eclipse.persistence.internal.jpa.metadata.MetadataProcessor.processORMMetadata(MetadataProcessor.java:446)
        at org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.processORMetadata(PersistenceUnitProcessor.java:303)
        at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:838)
        ... 8 more

I took the liberty of debugging the stack a lil bit, and it seems the m_rawClass doesn't get set properly in the method MetadataAnnotatedElement.getRawClass() because the m_genericTypes variable never gets populated for EmbeddableAccessor.

It does however get populated properly for Entites by the EntityAccessor.discoverMappedSuperclassesAndInheritanceParents() method. At the risk of sounding presumptuous, it would seem calling a similar method in the process() method of the EmbeddableAccessor might fix this... Apologies for the amateur diagnosis, but this has been really jamming up my work.

Could this be fixed for generics on Embeddables?

p.s. should I be sending this to the DEV list?

Re: NullPointerException for ManyToOne in genericEmbeddable

by Guy Pelletier :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

That likely won't fix it.

What does your embeddable mapping look like?

Cheers,
Guy
----- Original Message -----
From: "jml83" <jeffrey.m.leong@...>
To: <eclipselink-users@...>
Sent: Friday, July 17, 2009 1:12 PM
Subject: [eclipselink-users] NullPointerException for ManyToOne in
genericEmbeddable


>
> I get the following exception when trying to process an Embeddable with a
> generic ManyToOne relationship using the built in
> org.eclipse.jpt.eclipselink.core.ddlgen.Main class in Eclipse Galileo:
>
> Caused by: java.lang.NullPointerException
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.objects.MetadataAnnotatedElement.setAnnotatedElement(MetadataAnnotatedElement.java:559)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.objects.MetadataAnnotatedElement.<init>(MetadataAnnotatedElement.java:90)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.objects.MetadataClass.<init>(MetadataClass.java:32)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.objects.MetadataAnnotatedElement.isEmbedded(MetadataAnnotatedElement.java:359)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.buildAccessor(ClassAccessor.java:261)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.processAccessorFields(ClassAccessor.java:577)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.addAccessors(ClassAccessor.java:239)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.processAccessors(ClassAccessor.java:633)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EmbeddableAccessor.process(EmbeddableAccessor.java:85)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.EmbeddedAccessor.processEmbeddableClass(EmbeddedAccessor.java:345)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.EmbeddedAccessor.process(EmbeddedAccessor.java:134)
> at
> org.eclipse.persistence.internal.jpa.metadata.MetadataDescriptor.processAccessors(MetadataDescriptor.java:1082)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.processAccessors(ClassAccessor.java:636)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EntityAccessor.processAccessors(EntityAccessor.java:611)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EntityAccessor.process(EntityAccessor.java:530)
> at
> org.eclipse.persistence.internal.jpa.metadata.MetadataProcessor.processORMMetadata(MetadataProcessor.java:446)
> at
> org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.processORMetadata(PersistenceUnitProcessor.java:303)
> at
> org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:838)
> ... 8 more
>
> I took the liberty of debugging the stack a lil bit, and it seems the
> m_rawClass doesn't get set properly in the method
> MetadataAnnotatedElement.getRawClass() because the m_genericTypes variable
> never gets populated for EmbeddableAccessor.
>
> It does however get populated properly for Entites by the
> EntityAccessor.discoverMappedSuperclassesAndInheritanceParents() method.
> At
> the risk of sounding presumptuous, it would seem calling a similar method
> in
> the process() method of the EmbeddableAccessor might fix this... Apologies
> for the amateur diagnosis, but this has been really jamming up my work.
>
> Could this be fixed for generics on Embeddables?
>
> p.s. should I be sending this to the DEV list?
>
> --
> View this message in context:
> http://www.nabble.com/NullPointerException-for-ManyToOne-in-generic-Embeddable-tp24535000p24535000.html
> Sent from the EclipseLink - Users mailing list archive at Nabble.com.
>
> _______________________________________________
> eclipselink-users mailing list
> eclipselink-users@...
> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>

_______________________________________________
eclipselink-users mailing list
eclipselink-users@...
https://dev.eclipse.org/mailman/listinfo/eclipselink-users

Re: NullPointerException for ManyToOne in genericEmbeddable

by jml83 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Here is a paraphrase of the code:

@Embeddable
public class Value implements Serializable {
        @ManyToOne
        private A asset;

        @Basic
        private double value;
}

@Entity
@Inheritance(strategy=InheritanceStrategy.Joined)
public Asset{
        @Id
        private String name;
}

@Entity
public Stock extends Asset{
        private String ticker;
}

@Entity
public ValueHolder{
        @Id
        String name;

        @Embedded
        private Value<Stock> value;
}

The same exact EntityAccessor.discoverMappedSuperclassesAndInheritanceParents() method may not work, but wouldn't it make sense to have a similar method that discovers the TypeVariables for Embedded classes and populates m_genericTypes?

Guy Pelletier wrote:
That likely won't fix it.

What does your embeddable mapping look like?

Cheers,
Guy
----- Original Message -----
From: "jml83" <jeffrey.m.leong@gmail.com>
To: <eclipselink-users@eclipse.org>
Sent: Friday, July 17, 2009 1:12 PM
Subject: [eclipselink-users] NullPointerException for ManyToOne in
genericEmbeddable


>
> I get the following exception when trying to process an Embeddable with a
> generic ManyToOne relationship using the built in
> org.eclipse.jpt.eclipselink.core.ddlgen.Main class in Eclipse Galileo:
>
> Caused by: java.lang.NullPointerException
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.objects.MetadataAnnotatedElement.setAnnotatedElement(MetadataAnnotatedElement.java:559)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.objects.MetadataAnnotatedElement.<init>(MetadataAnnotatedElement.java:90)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.objects.MetadataClass.<init>(MetadataClass.java:32)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.objects.MetadataAnnotatedElement.isEmbedded(MetadataAnnotatedElement.java:359)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.buildAccessor(ClassAccessor.java:261)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.processAccessorFields(ClassAccessor.java:577)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.addAccessors(ClassAccessor.java:239)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.processAccessors(ClassAccessor.java:633)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EmbeddableAccessor.process(EmbeddableAccessor.java:85)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.EmbeddedAccessor.processEmbeddableClass(EmbeddedAccessor.java:345)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.EmbeddedAccessor.process(EmbeddedAccessor.java:134)
> at
> org.eclipse.persistence.internal.jpa.metadata.MetadataDescriptor.processAccessors(MetadataDescriptor.java:1082)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.processAccessors(ClassAccessor.java:636)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EntityAccessor.processAccessors(EntityAccessor.java:611)
> at
> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EntityAccessor.process(EntityAccessor.java:530)
> at
> org.eclipse.persistence.internal.jpa.metadata.MetadataProcessor.processORMMetadata(MetadataProcessor.java:446)
> at
> org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.processORMetadata(PersistenceUnitProcessor.java:303)
> at
> org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:838)
> ... 8 more
>
> I took the liberty of debugging the stack a lil bit, and it seems the
> m_rawClass doesn't get set properly in the method
> MetadataAnnotatedElement.getRawClass() because the m_genericTypes variable
> never gets populated for EmbeddableAccessor.
>
> It does however get populated properly for Entites by the
> EntityAccessor.discoverMappedSuperclassesAndInheritanceParents() method.
> At
> the risk of sounding presumptuous, it would seem calling a similar method
> in
> the process() method of the EmbeddableAccessor might fix this... Apologies
> for the amateur diagnosis, but this has been really jamming up my work.
>
> Could this be fixed for generics on Embeddables?
>
> p.s. should I be sending this to the DEV list?
>
> --
> View this message in context:
> http://www.nabble.com/NullPointerException-for-ManyToOne-in-generic-Embeddable-tp24535000p24535000.html
> Sent from the EclipseLink - Users mailing list archive at Nabble.com.
>
> _______________________________________________
> eclipselink-users mailing list
> eclipselink-users@eclipse.org
> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>

_______________________________________________
eclipselink-users mailing list
eclipselink-users@eclipse.org
https://dev.eclipse.org/mailman/listinfo/eclipselink-users

Memory leak in IndirectList

by Sebastien Tardif-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I see the following references to ClientSession in memory. I'm using
EclipseLink 1.1.2. You can see that ServerSession end-up to reference an
object that has an IndirectList, which point to BatchValueHolder, that
keep reference to a ReadAllQuery with a UOW and ClientSession.

Is it a known issue? Any workaround?

org.eclipse.persistence.sessions.server.ClientSession
org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork
org.eclipse.persistence.queries.ReadAllQuery
org.eclipse.persistence.internal.indirection.BatchValueHolder
org.eclipse.persistence.indirection.IndirectList
com.saic.ct.sys.domain.dataservices.RtsWorkingSchedule
com.saic.ct.sys.domain.dataservices.RtsReconciledTimeEntryPair
java.lang.ref.SoftReference
org.eclipse.persistence.internal.helper.linkedlist.LinkedNode
org.eclipse.persistence.internal.helper.linkedlist.LinkedNode
org.eclipse.persistence.internal.helper.linkedlist.ExposedNodeLinkedList
org.eclipse.persistence.internal.identitymaps.SoftCacheWeakIdentityMap
org.eclipse.persistence.internal.identitymaps.IdentityMapManager
org.eclipse.persistence.internal.sessions.IdentityMapAccessor
org.eclipse.persistence.sessions.server.ServerSession
java.util.Hashtable$HashtableCacheHashEntry
java.util.Hashtable$Entry[]
java.util.Hashtable
org.eclipse.persistence.sessions.factories.SessionManager
org.eclipse.persistence.sessions.factories.SessionManager
com.ibm.oti.vm.BootstrapClassLoader

-----Original Message-----
From: eclipselink-users-bounces@...
[mailto:eclipselink-users-bounces@...] On Behalf Of jml83
Sent: Friday, July 17, 2009 5:02 PM
To: eclipselink-users@...
Subject: Re: [eclipselink-users] NullPointerException for ManyToOne
ingenericEmbeddable


Here is a paraphrase of the code:

@Embeddable
public class Value  implements Serializable {
        @ManyToOne
        private A asset;

        @Basic
        private double value;
}

@Entity
@Inheritance(strategy=InheritanceStrategy.Joined)
public Asset{
        @Id
        private String name;
}

@Entity
public Stock extends Asset{
        private String ticker;
}

@Entity
public ValueHolder{
        @Id
        String name;

        @Embedded
        private Value<Stock> value;
}

The same exact
EntityAccessor.discoverMappedSuperclassesAndInheritanceParents() method
may
not work, but wouldn't it make sense to have a similar method that
discovers
the TypeVariables for Embedded classes and populates m_genericTypes?


Guy Pelletier wrote:

>
> That likely won't fix it.
>
> What does your embeddable mapping look like?
>
> Cheers,
> Guy
> ----- Original Message -----
> From: "jml83" <jeffrey.m.leong@...>
> To: <eclipselink-users@...>
> Sent: Friday, July 17, 2009 1:12 PM
> Subject: [eclipselink-users] NullPointerException for ManyToOne in
> genericEmbeddable
>
>
>>
>> I get the following exception when trying to process an Embeddable
with a
>> generic ManyToOne relationship using the built in
>> org.eclipse.jpt.eclipselink.core.ddlgen.Main class in Eclipse
Galileo:
>>
>> Caused by: java.lang.NullPointerException
>> at
>>
org.eclipse.persistence.internal.jpa.metadata.accessors.objects.Metadata
AnnotatedElement.setAnnotatedElement(MetadataAnnotatedElement.java:559)
>> at
>>
org.eclipse.persistence.internal.jpa.metadata.accessors.objects.Metadata
AnnotatedElement.<init>(MetadataAnnotatedElement.java:90)
>> at
>>
org.eclipse.persistence.internal.jpa.metadata.accessors.objects.Metadata
Class.<init>(MetadataClass.java:32)
>> at
>>
org.eclipse.persistence.internal.jpa.metadata.accessors.objects.Metadata
AnnotatedElement.isEmbedded(MetadataAnnotatedElement.java:359)
>> at
>>
org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAcc
essor.buildAccessor(ClassAccessor.java:261)
>> at
>>
org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAcc
essor.processAccessorFields(ClassAccessor.java:577)
>> at
>>
org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAcc
essor.addAccessors(ClassAccessor.java:239)
>> at
>>
org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAcc
essor.processAccessors(ClassAccessor.java:633)
>> at
>>
org.eclipse.persistence.internal.jpa.metadata.accessors.classes.Embeddab
leAccessor.process(EmbeddableAccessor.java:85)
>> at
>>
org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.Embedde
dAccessor.processEmbeddableClass(EmbeddedAccessor.java:345)
>> at
>>
org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.Embedde
dAccessor.process(EmbeddedAccessor.java:134)
>> at
>>
org.eclipse.persistence.internal.jpa.metadata.MetadataDescriptor.process
Accessors(MetadataDescriptor.java:1082)
>> at
>>
org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAcc
essor.processAccessors(ClassAccessor.java:636)
>> at
>>
org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EntityAc
cessor.processAccessors(EntityAccessor.java:611)
>> at
>>
org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EntityAc
cessor.process(EntityAccessor.java:530)
>> at
>>
org.eclipse.persistence.internal.jpa.metadata.MetadataProcessor.processO
RMMetadata(MetadataProcessor.java:446)
>> at
>>
org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor
.processORMetadata(PersistenceUnitProcessor.java:303)
>> at
>>
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(En
tityManagerSetupImpl.java:838)

>> ... 8 more
>>
>> I took the liberty of debugging the stack a lil bit, and it seems the
>> m_rawClass doesn't get set properly in the method
>> MetadataAnnotatedElement.getRawClass() because the m_genericTypes
>> variable
>> never gets populated for EmbeddableAccessor.
>>
>> It does however get populated properly for Entites by the
>> EntityAccessor.discoverMappedSuperclassesAndInheritanceParents()
method.
>> At
>> the risk of sounding presumptuous, it would seem calling a similar
method
>> in
>> the process() method of the EmbeddableAccessor might fix this...
>> Apologies
>> for the amateur diagnosis, but this has been really jamming up my
work.
>>
>> Could this be fixed for generics on Embeddables?
>>
>> p.s. should I be sending this to the DEV list?
>>
>> --
>> View this message in context:
>>
http://www.nabble.com/NullPointerException-for-ManyToOne-in-generic-Embe
ddable-tp24535000p24535000.html

>> Sent from the EclipseLink - Users mailing list archive at Nabble.com.
>>
>> _______________________________________________
>> eclipselink-users mailing list
>> eclipselink-users@...
>> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>>
>
> _______________________________________________
> eclipselink-users mailing list
> eclipselink-users@...
> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>
>

--
View this message in context:
http://www.nabble.com/NullPointerException-for-ManyToOne-in-generic-Embe
ddable-tp24535000p24541659.html
Sent from the EclipseLink - Users mailing list archive at Nabble.com.

_______________________________________________
eclipselink-users mailing list
eclipselink-users@...
https://dev.eclipse.org/mailman/listinfo/eclipselink-users
_______________________________________________
eclipselink-users mailing list
eclipselink-users@...
https://dev.eclipse.org/mailman/listinfo/eclipselink-users

Re: NullPointerException for ManyToOne ingenericEmbeddable

by Guy Pelletier :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Yes, please enter a bug for this.

Thanks,
Guy

----- Original Message -----
From: "jml83" <jeffrey.m.leong@...>
To: <eclipselink-users@...>
Sent: Friday, July 17, 2009 5:01 PM
Subject: Re: [eclipselink-users] NullPointerException for ManyToOne
ingenericEmbeddable


>
> Here is a paraphrase of the code:
>
> @Embeddable
> public class Value  implements Serializable {
> @ManyToOne
> private A asset;
>
> @Basic
> private double value;
> }
>
> @Entity
> @Inheritance(strategy=InheritanceStrategy.Joined)
> public Asset{
> @Id
> private String name;
> }
>
> @Entity
> public Stock extends Asset{
> private String ticker;
> }
>
> @Entity
> public ValueHolder{
> @Id
> String name;
>
> @Embedded
> private Value<Stock> value;
> }
>
> The same exact
> EntityAccessor.discoverMappedSuperclassesAndInheritanceParents() method
> may
> not work, but wouldn't it make sense to have a similar method that
> discovers
> the TypeVariables for Embedded classes and populates m_genericTypes?
>
>
> Guy Pelletier wrote:
>>
>> That likely won't fix it.
>>
>> What does your embeddable mapping look like?
>>
>> Cheers,
>> Guy
>> ----- Original Message -----
>> From: "jml83" <jeffrey.m.leong@...>
>> To: <eclipselink-users@...>
>> Sent: Friday, July 17, 2009 1:12 PM
>> Subject: [eclipselink-users] NullPointerException for ManyToOne in
>> genericEmbeddable
>>
>>
>>>
>>> I get the following exception when trying to process an Embeddable with
>>> a
>>> generic ManyToOne relationship using the built in
>>> org.eclipse.jpt.eclipselink.core.ddlgen.Main class in Eclipse Galileo:
>>>
>>> Caused by: java.lang.NullPointerException
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.accessors.objects.MetadataAnnotatedElement.setAnnotatedElement(MetadataAnnotatedElement.java:559)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.accessors.objects.MetadataAnnotatedElement.<init>(MetadataAnnotatedElement.java:90)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.accessors.objects.MetadataClass.<init>(MetadataClass.java:32)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.accessors.objects.MetadataAnnotatedElement.isEmbedded(MetadataAnnotatedElement.java:359)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.buildAccessor(ClassAccessor.java:261)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.processAccessorFields(ClassAccessor.java:577)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.addAccessors(ClassAccessor.java:239)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.processAccessors(ClassAccessor.java:633)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EmbeddableAccessor.process(EmbeddableAccessor.java:85)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.EmbeddedAccessor.processEmbeddableClass(EmbeddedAccessor.java:345)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.EmbeddedAccessor.process(EmbeddedAccessor.java:134)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.MetadataDescriptor.processAccessors(MetadataDescriptor.java:1082)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.processAccessors(ClassAccessor.java:636)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EntityAccessor.processAccessors(EntityAccessor.java:611)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EntityAccessor.process(EntityAccessor.java:530)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.MetadataProcessor.processORMMetadata(MetadataProcessor.java:446)
>>> at
>>> org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.processORMetadata(PersistenceUnitProcessor.java:303)
>>> at
>>> org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:838)
>>> ... 8 more
>>>
>>> I took the liberty of debugging the stack a lil bit, and it seems the
>>> m_rawClass doesn't get set properly in the method
>>> MetadataAnnotatedElement.getRawClass() because the m_genericTypes
>>> variable
>>> never gets populated for EmbeddableAccessor.
>>>
>>> It does however get populated properly for Entites by the
>>> EntityAccessor.discoverMappedSuperclassesAndInheritanceParents() method.
>>> At
>>> the risk of sounding presumptuous, it would seem calling a similar
>>> method
>>> in
>>> the process() method of the EmbeddableAccessor might fix this...
>>> Apologies
>>> for the amateur diagnosis, but this has been really jamming up my work.
>>>
>>> Could this be fixed for generics on Embeddables?
>>>
>>> p.s. should I be sending this to the DEV list?
>>>
>>> --
>>> View this message in context:
>>> http://www.nabble.com/NullPointerException-for-ManyToOne-in-generic-Embeddable-tp24535000p24535000.html
>>> Sent from the EclipseLink - Users mailing list archive at Nabble.com.
>>>
>>> _______________________________________________
>>> eclipselink-users mailing list
>>> eclipselink-users@...
>>> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>>>
>>
>> _______________________________________________
>> eclipselink-users mailing list
>> eclipselink-users@...
>> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>>
>>
>
> --
> View this message in context:
> http://www.nabble.com/NullPointerException-for-ManyToOne-in-generic-Embeddable-tp24535000p24541659.html
> Sent from the EclipseLink - Users mailing list archive at Nabble.com.
>
> _______________________________________________
> eclipselink-users mailing list
> eclipselink-users@...
> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>

_______________________________________________
eclipselink-users mailing list
eclipselink-users@...
https://dev.eclipse.org/mailman/listinfo/eclipselink-users

Re: NullPointerException for ManyToOne ingenericEmbeddable

by jml83 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Done:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=284013

Guy Pelletier wrote:
Yes, please enter a bug for this.

Thanks,
Guy

----- Original Message -----
From: "jml83" <jeffrey.m.leong@gmail.com>
To: <eclipselink-users@eclipse.org>
Sent: Friday, July 17, 2009 5:01 PM
Subject: Re: [eclipselink-users] NullPointerException for ManyToOne
ingenericEmbeddable


>
> Here is a paraphrase of the code:
>
> @Embeddable
> public class Value  implements Serializable {
> @ManyToOne
> private A asset;
>
> @Basic
> private double value;
> }
>
> @Entity
> @Inheritance(strategy=InheritanceStrategy.Joined)
> public Asset{
> @Id
> private String name;
> }
>
> @Entity
> public Stock extends Asset{
> private String ticker;
> }
>
> @Entity
> public ValueHolder{
> @Id
> String name;
>
> @Embedded
> private Value<Stock> value;
> }
>
> The same exact
> EntityAccessor.discoverMappedSuperclassesAndInheritanceParents() method
> may
> not work, but wouldn't it make sense to have a similar method that
> discovers
> the TypeVariables for Embedded classes and populates m_genericTypes?
>
>
> Guy Pelletier wrote:
>>
>> That likely won't fix it.
>>
>> What does your embeddable mapping look like?
>>
>> Cheers,
>> Guy
>> ----- Original Message -----
>> From: "jml83" <jeffrey.m.leong@gmail.com>
>> To: <eclipselink-users@eclipse.org>
>> Sent: Friday, July 17, 2009 1:12 PM
>> Subject: [eclipselink-users] NullPointerException for ManyToOne in
>> genericEmbeddable
>>
>>
>>>
>>> I get the following exception when trying to process an Embeddable with
>>> a
>>> generic ManyToOne relationship using the built in
>>> org.eclipse.jpt.eclipselink.core.ddlgen.Main class in Eclipse Galileo:
>>>
>>> Caused by: java.lang.NullPointerException
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.accessors.objects.MetadataAnnotatedElement.setAnnotatedElement(MetadataAnnotatedElement.java:559)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.accessors.objects.MetadataAnnotatedElement.<init>(MetadataAnnotatedElement.java:90)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.accessors.objects.MetadataClass.<init>(MetadataClass.java:32)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.accessors.objects.MetadataAnnotatedElement.isEmbedded(MetadataAnnotatedElement.java:359)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.buildAccessor(ClassAccessor.java:261)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.processAccessorFields(ClassAccessor.java:577)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.addAccessors(ClassAccessor.java:239)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.processAccessors(ClassAccessor.java:633)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EmbeddableAccessor.process(EmbeddableAccessor.java:85)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.EmbeddedAccessor.processEmbeddableClass(EmbeddedAccessor.java:345)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.EmbeddedAccessor.process(EmbeddedAccessor.java:134)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.MetadataDescriptor.processAccessors(MetadataDescriptor.java:1082)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.processAccessors(ClassAccessor.java:636)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EntityAccessor.processAccessors(EntityAccessor.java:611)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EntityAccessor.process(EntityAccessor.java:530)
>>> at
>>> org.eclipse.persistence.internal.jpa.metadata.MetadataProcessor.processORMMetadata(MetadataProcessor.java:446)
>>> at
>>> org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.processORMetadata(PersistenceUnitProcessor.java:303)
>>> at
>>> org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:838)
>>> ... 8 more
>>>
>>> I took the liberty of debugging the stack a lil bit, and it seems the
>>> m_rawClass doesn't get set properly in the method
>>> MetadataAnnotatedElement.getRawClass() because the m_genericTypes
>>> variable
>>> never gets populated for EmbeddableAccessor.
>>>
>>> It does however get populated properly for Entites by the
>>> EntityAccessor.discoverMappedSuperclassesAndInheritanceParents() method.
>>> At
>>> the risk of sounding presumptuous, it would seem calling a similar
>>> method
>>> in
>>> the process() method of the EmbeddableAccessor might fix this...
>>> Apologies
>>> for the amateur diagnosis, but this has been really jamming up my work.
>>>
>>> Could this be fixed for generics on Embeddables?
>>>
>>> p.s. should I be sending this to the DEV list?
>>>
>>> --
>>> View this message in context:
>>> http://www.nabble.com/NullPointerException-for-ManyToOne-in-generic-Embeddable-tp24535000p24535000.html
>>> Sent from the EclipseLink - Users mailing list archive at Nabble.com.
>>>
>>> _______________________________________________
>>> eclipselink-users mailing list
>>> eclipselink-users@eclipse.org
>>> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>>>
>>
>> _______________________________________________
>> eclipselink-users mailing list
>> eclipselink-users@eclipse.org
>> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>>
>>
>
> --
> View this message in context:
> http://www.nabble.com/NullPointerException-for-ManyToOne-in-generic-Embeddable-tp24535000p24541659.html
> Sent from the EclipseLink - Users mailing list archive at Nabble.com.
>
> _______________________________________________
> eclipselink-users mailing list
> eclipselink-users@eclipse.org
> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>

_______________________________________________
eclipselink-users mailing list
eclipselink-users@eclipse.org
https://dev.eclipse.org/mailman/listinfo/eclipselink-users

Re: NullPointerException for ManyToOne in generic Embeddable

by jml83 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

It seems this problem is not just for classes marked Embeddable. I removed all embeddables and now I am getting this error for any parametrized reference to an Entity. This would seem to imply this is broken for any domain model with generics. This is surprising, and incredibly frustrating.

Is Eclipselink meant to work with Generics?

Re: NullPointerException for ManyToOne ingeneric Embeddable

by Guy Pelletier :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

If I understand you correctly you want to do something like this:

Entity1 {
 @ManyToOne
 public Entity3<Integer> entity3;
}

Entity2 {
 @ManyToOne
 public Entity3<String> entity3;
}

Entity 3<X> {
    public X fooBar;
}

Is this correct? If so, no we currently don't support this type of
configuration. Internally fooBar is represented as a single mapping with a
static type. You may want to append this to the bug you entered previously
to have someone at it.

In the mean time you could use inheritance and a mappedsuperclass to get
around this, i.e.:

RootEntity {}

MappedSuperclass<X>  extends RootEntity {
    public X fooBar;
}

EntityInteger extends MappedSuperclass<Integer> {}

EntityString extends MappedSupeclass<String> {}

Entity1 {
 @ManyToOne
 public EntityInteger entityInteger;
}

Entity2 {
 @ManyToOne
 public EntityString entityString;
}

Cheers,
Guy

----- Original Message -----
From: "jml83" <jeffrey.m.leong@...>
To: <eclipselink-users@...>
Sent: Tuesday, July 21, 2009 11:29 AM
Subject: Re: [eclipselink-users] NullPointerException for ManyToOne
ingeneric Embeddable


>
> It seems this problem is not just for classes marked Embeddable. I removed
> all embeddables and now I am getting this error for any parametrized
> reference to an Entity. This would seem to imply this is broken for any
> domain model with generics. This is surprising, and incredibly
> frustrating.
>
> Is Eclipselink meant to work with Generics?
> --
> View this message in context:
> http://www.nabble.com/NullPointerException-for-ManyToOne-in-generic-Embeddable-tp24535000p24589987.html
> Sent from the EclipseLink - Users mailing list archive at Nabble.com.
>
> _______________________________________________
> eclipselink-users mailing list
> eclipselink-users@...
> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>

_______________________________________________
eclipselink-users mailing list
eclipselink-users@...
https://dev.eclipse.org/mailman/listinfo/eclipselink-users

Re: NullPointerException for ManyToOne ingeneric Embeddable

by jml83 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Thanks for the reply and the suggested solution. Incidentally, that is the route I had had decided on.

It may be of interest to you, the Hibernate folks are working on the same issue. I happened upon the following (I hope its OK to talk about the competition here!):
Generics and @Embedded doesn't work

And an extension and interesting discussion of the problem here:
Type aproximation and unbound type limitation

I could imagine implementing these relationships based on bounds would be very useful.

Cheers,
Jeff


Guy Pelletier wrote:
If I understand you correctly you want to do something like this:

Entity1 {
 @ManyToOne
 public Entity3<Integer> entity3;
}

Entity2 {
 @ManyToOne
 public Entity3<String> entity3;
}

Entity 3<X> {
    public X fooBar;
}

Is this correct? If so, no we currently don't support this type of
configuration. Internally fooBar is represented as a single mapping with a
static type. You may want to append this to the bug you entered previously
to have someone at it.

In the mean time you could use inheritance and a mappedsuperclass to get
around this, i.e.:

RootEntity {}

MappedSuperclass<X>  extends RootEntity {
    public X fooBar;
}

EntityInteger extends MappedSuperclass<Integer> {}

EntityString extends MappedSupeclass<String> {}

Entity1 {
 @ManyToOne
 public EntityInteger entityInteger;
}

Entity2 {
 @ManyToOne
 public EntityString entityString;
}

Cheers,
Guy

----- Original Message -----
From: "jml83" <jeffrey.m.leong@gmail.com>
To: <eclipselink-users@eclipse.org>
Sent: Tuesday, July 21, 2009 11:29 AM
Subject: Re: [eclipselink-users] NullPointerException for ManyToOne
ingeneric Embeddable


>
> It seems this problem is not just for classes marked Embeddable. I removed
> all embeddables and now I am getting this error for any parametrized
> reference to an Entity. This would seem to imply this is broken for any
> domain model with generics. This is surprising, and incredibly
> frustrating.
>
> Is Eclipselink meant to work with Generics?
> --
> View this message in context:
> http://www.nabble.com/NullPointerException-for-ManyToOne-in-generic-Embeddable-tp24535000p24589987.html
> Sent from the EclipseLink - Users mailing list archive at Nabble.com.
>
> _______________________________________________
> eclipselink-users mailing list
> eclipselink-users@eclipse.org
> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>

_______________________________________________
eclipselink-users mailing list
eclipselink-users@eclipse.org
https://dev.eclipse.org/mailman/listinfo/eclipselink-users