|
View:
New views
9 Messages
—
Rating Filter:
Alert me
|
|
|
NullPointerException for ManyToOne in generic EmbeddableI 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 genericEmbeddableThat 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 |
|
|
Memory leak in IndirectListI 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 >> 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() >> 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 ingenericEmbeddableYes, 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 ingenericEmbeddableDone:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=284013
|
|
|
Re: NullPointerException for ManyToOne in generic EmbeddableIt 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 EmbeddableIf 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 EmbeddableThanks 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
|
| Free embeddable forum powered by Nabble | Forum Help |