You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@openwebbeans.apache.org by Björn Berg <bj...@gmx.de> on 2017/11/21 20:27:12 UTC
Using JPA with Microwave fails
Hi,
I have tried to create a small application based on Meecrowave and JPA extension. But when I always try to persist an entity, it fails with a NullPointerException which I cannot really drill down to find the root cause.
First I thought injected EntityManager is null but logging the EntityManager call told me, that it really exists. PersistenceUnitInfoBuilder and DataSource is produced like described on
http://openwebbeans.apache.org/meecrowave/meecrowave-jpa/index.html <http://openwebbeans.apache.org/meecrowave/meecrowave-jpa/index.html>
The called InstrumentDao looks like this:
@ApplicationScoped
@Jpa(transactional = false)
public class InstrumentDao {
@Inject
@Unit(name = "depot")
private EntityManager em;
@Jpa
public void save (Instrument instrument) {
em.merge(instrument);
}
…
}
The entity Instrument is defined like this:
@Entity
@Table(name = "INSTRUMENT")
public class Instrument implements Serializable {
@Id
private String isin;
private String name;
public Instrument() {
}
…
}
Stacktrace is like following:
Caused by: java.lang.NullPointerException
at org.apache.meecrowave.jpa.internal.EntityManagerBean.destroy(EntityManagerBean.java:95) ~[meecrowave-jpa-1.1.0.jar:1.1.0]
at org.apache.meecrowave.jpa.internal.EntityManagerBean.destroy(EntityManagerBean.java:29) ~[meecrowave-jpa-1.1.0.jar:1.1.0]
at org.apache.webbeans.component.third.ThirdpartyBeanImpl.destroy(ThirdpartyBeanImpl.java:113) ~[openwebbeans-impl-2.0.1.jar:2.0.1]
at org.apache.meecrowave.jpa.internal.EntityManagerContext$ThreadContext.doDestroy(EntityManagerContext.java:130) ~[meecrowave-jpa-1.1.0.jar:1.1.0]
at org.apache.meecrowave.jpa.internal.EntityManagerContext$ThreadContext.lambda$exit$1(EntityManagerContext.java:140) ~[meecrowave-jpa-1.1.0.jar:1.1.0]
at java.util.HashMap.forEach(HashMap.java:1280) ~[?:1.8.0_77]
at org.apache.meecrowave.jpa.internal.EntityManagerContext$ThreadContext.exit(EntityManagerContext.java:140) ~[meecrowave-jpa-1.1.0.jar:1.1.0]
at org.apache.meecrowave.jpa.internal.EntityManagerContext$ThreadContext.access$300(EntityManagerContext.java:94) ~[meecrowave-jpa-1.1.0.jar:1.1.0]
at org.apache.meecrowave.jpa.internal.EntityManagerContext.exit(EntityManagerContext.java:52) ~[meecrowave-jpa-1.1.0.jar:1.1.0]
at org.apache.meecrowave.jpa.internal.JpaInterceptorBase.inTransaction(JpaInterceptorBase.java:40) ~[meecrowave-jpa-1.1.0.jar:1.1.0]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_77]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_77]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_77]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_77]
at org.apache.webbeans.component.InterceptorBean.intercept(InterceptorBean.java:136) ~[openwebbeans-impl-2.0.1.jar:2.0.1]
at org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:65) ~[openwebbeans-impl-2.0.1.jar:2.0.1]
at org.apache.webbeans.intercept.DefaultInterceptorHandler.invoke(DefaultInterceptorHandler.java:139) ~[openwebbeans-impl-2.0.1.jar:2.0.1]
at org.kivio.depot.dao.InstrumentDao$$OwbInterceptProxy0.save(org/kivio/depot/dao/InstrumentDao.java) ~[?:?]
at org.kivio.depot.dao.InstrumentDao$$OwbNormalScopeProxy0.save(org/kivio/depot/dao/InstrumentDao.java) ~[?:?]
at org.kivio.depot.service.DepotService.addInstrument(DepotService.java:69) ~[classes/:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_77]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_77]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_77]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_77]
Someone can give me a hint what I am doing wrong?
Kind regards,
Björn
Re: Using JPA with Microwave fails
Posted by Romain Manni-Bucau <rm...@gmail.com>.
Oh right. Same for relationships BTW.
Le 23 nov. 2017 22:09, "Björn Berg" <bj...@gmx.de> a écrit :
> So stupid. I had to enhance my entities for usage with OpenJPA.
> Only if enhancement tool worked on entities, IdClass and EmbeddedId
> working properly.
> The option openjpa.RuntimeUnenhancedClasses = supported does not work for
> composite keys.
>
> Am 23.11.2017 um 21:04 schrieb Björn Berg <bj...@gmx.de>:
>
> I am indirectly using OpenJpa with meecrowave-jpa component. @Vetoed does
> not help and there is no beans.xml.
> Seems to be a problem with all kinds of EmbeddedId or IdClass.
> I have added my sample to GitHub: https://github.com/
> rollinhand/meecrowave-jpa-sample
>
> What do you mean with "exclude it from meecrowave option“?
>
>
> Am 23.11.2017 um 06:32 schrieb Romain Manni-Bucau <rm...@gmail.com>:
>
> Can depend your jpa provider. Maybe try adding @Vetoed on it or exclude it
> from meecrowave option or CDI beans.xml excludes.
>
> Le 22 nov. 2017 23:58, "Björn Berg" <bj...@gmx.de> a écrit :
>
>> One addition because my latest post was not right. It is not Liquibase,
>> it is an embedded Id I use in a different class, added to the persistence
>> context.
>>
>> When I remove the class, everything is fine.
>> When I add a single @Id annotation, everything is fine.
>>
>> This is the entity class and its embedded Id:
>>
>> @Getter
>> @Setter
>> @Entity
>> @Table(name = "PORTFOLIO")
>> public class Portfolio {
>> @EmbeddedId
>> private PortfolioId portfolioId;
>>
>> @Column(name = "NOMINAL")
>> private BigDecimal nominal;
>>
>> @Column(name = "CURRENCY")
>> private String currency;
>>
>> …
>>
>> }
>>
>> @Getter
>> @Setter
>> @Embeddable
>> public class PortfolioId {
>> @Temporal(TemporalType.DATE)
>> @Column(name = "NAV_DATE", nullable = false)
>> private Date navDate;
>>
>> @Column(name = "ISIN", nullable = false, length = 12)
>> private String isin;
>>
>> public PortfolioId() {}
>> …
>> }
>>
>> What’s wrong with it?
>>
>> Björn
>>
>>
>>
>>
>>
>> Am 22.11.2017 um 22:00 schrieb Björn Berg <bj...@gmx.de>:
>>
>> Found the problem. I am using Liquibase CDI extension in my project and a
>> Liquibase producer.
>> If I run migrations before, there seems to be a problem with the
>> datasource and injection of EntityManager.
>>
>> Removing all Liquibase extensions made the project running.
>>
>> Am 21.11.2017 um 23:38 schrieb Romain Manni-Bucau <rmannibucau@gmail.com
>> >:
>>
>> Looks like cdi instance is null in this context. Do you have a sample
>> reproducing it?
>>
>> Le 21 nov. 2017 21:27, "Björn Berg" <bj...@gmx.de> a écrit :
>>
>>> Hi,
>>>
>>> I have tried to create a small application based on Meecrowave and JPA
>>> extension. But when I always try to persist an entity, it fails with a
>>> NullPointerException which I cannot really drill down to find the root
>>> cause.
>>>
>>> First I thought injected EntityManager is null but logging the
>>> EntityManager call told me, that it really exists.
>>> PersistenceUnitInfoBuilder and DataSource is produced like described on
>>> http://openwebbeans.apache.org/meecrowave/meecrowave-jpa/index.html
>>>
>>>
>>> [...]
>>>
>>> Someone can give me a hint what I am doing wrong?
>>>
>>> Kind regards,
>>> Björn
>>>
>>>
>>
>>
>
>
Re: Using JPA with Microwave fails
Posted by Björn Berg <bj...@gmx.de>.
So stupid. I had to enhance my entities for usage with OpenJPA.
Only if enhancement tool worked on entities, IdClass and EmbeddedId working properly.
The option openjpa.RuntimeUnenhancedClasses = supported does not work for composite keys.
> Am 23.11.2017 um 21:04 schrieb Björn Berg <bj...@gmx.de>:
>
> I am indirectly using OpenJpa with meecrowave-jpa component. @Vetoed does not help and there is no beans.xml.
> Seems to be a problem with all kinds of EmbeddedId or IdClass.
> I have added my sample to GitHub: https://github.com/rollinhand/meecrowave-jpa-sample <https://github.com/rollinhand/meecrowave-jpa-sample>
>
> What do you mean with "exclude it from meecrowave option“?
>
>
>> Am 23.11.2017 um 06:32 schrieb Romain Manni-Bucau <rmannibucau@gmail.com <ma...@gmail.com>>:
>>
>> Can depend your jpa provider. Maybe try adding @Vetoed on it or exclude it from meecrowave option or CDI beans.xml excludes.
>>
>> Le 22 nov. 2017 23:58, "Björn Berg" <bjoern.berg@gmx.de <ma...@gmx.de>> a écrit :
>> One addition because my latest post was not right. It is not Liquibase, it is an embedded Id I use in a different class, added to the persistence context.
>>
>> When I remove the class, everything is fine.
>> When I add a single @Id annotation, everything is fine.
>>
>> This is the entity class and its embedded Id:
>>
>> @Getter
>> @Setter
>> @Entity
>> @Table(name = "PORTFOLIO")
>> public class Portfolio {
>> @EmbeddedId
>> private PortfolioId portfolioId;
>>
>> @Column(name = "NOMINAL")
>> private BigDecimal nominal;
>>
>> @Column(name = "CURRENCY")
>> private String currency;
>>
>> …
>>
>> }
>>
>> @Getter
>> @Setter
>> @Embeddable
>> public class PortfolioId {
>> @Temporal(TemporalType.DATE)
>> @Column(name = "NAV_DATE", nullable = false)
>> private Date navDate;
>>
>> @Column(name = "ISIN", nullable = false, length = 12)
>> private String isin;
>>
>> public PortfolioId() {}
>> …
>> }
>>
>> What’s wrong with it?
>>
>> Björn
>>
>>
>>
>>
>>
>>> Am 22.11.2017 um 22:00 schrieb Björn Berg <bjoern.berg@gmx.de <ma...@gmx.de>>:
>>>
>>> Found the problem. I am using Liquibase CDI extension in my project and a Liquibase producer.
>>> If I run migrations before, there seems to be a problem with the datasource and injection of EntityManager.
>>>
>>> Removing all Liquibase extensions made the project running.
>>>
>>>> Am 21.11.2017 um 23:38 schrieb Romain Manni-Bucau <rmannibucau@gmail.com <ma...@gmail.com>>:
>>>>
>>>> Looks like cdi instance is null in this context. Do you have a sample reproducing it?
>>>>
>>>> Le 21 nov. 2017 21:27, "Björn Berg" <bjoern.berg@gmx.de <ma...@gmx.de>> a écrit :
>>>> Hi,
>>>>
>>>> I have tried to create a small application based on Meecrowave and JPA extension. But when I always try to persist an entity, it fails with a NullPointerException which I cannot really drill down to find the root cause.
>>>>
>>>> First I thought injected EntityManager is null but logging the EntityManager call told me, that it really exists. PersistenceUnitInfoBuilder and DataSource is produced like described on
>>>> http://openwebbeans.apache.org/meecrowave/meecrowave-jpa/index.html <http://openwebbeans.apache.org/meecrowave/meecrowave-jpa/index.html>
>>>>
>>>>
>>>> [...]
>>>>
>>>> Someone can give me a hint what I am doing wrong?
>>>>
>>>> Kind regards,
>>>> Björn
>>>>
>>>
>>
>
Re: Using JPA with Microwave fails
Posted by Romain Manni-Bucau <rm...@gmail.com>.
Hmm
Theses classes are not scanned inti the jpa extension. Can be missing. Want
to try to patch it to test?
Le 23 nov. 2017 21:05, "Björn Berg" <bj...@gmx.de> a écrit :
> I am indirectly using OpenJpa with meecrowave-jpa component. @Vetoed does
> not help and there is no beans.xml.
> Seems to be a problem with all kinds of EmbeddedId or IdClass.
> I have added my sample to GitHub: https://github.com/
> rollinhand/meecrowave-jpa-sample
>
> What do you mean with "exclude it from meecrowave option“?
>
>
> Am 23.11.2017 um 06:32 schrieb Romain Manni-Bucau <rm...@gmail.com>:
>
> Can depend your jpa provider. Maybe try adding @Vetoed on it or exclude it
> from meecrowave option or CDI beans.xml excludes.
>
> Le 22 nov. 2017 23:58, "Björn Berg" <bj...@gmx.de> a écrit :
>
>> One addition because my latest post was not right. It is not Liquibase,
>> it is an embedded Id I use in a different class, added to the persistence
>> context.
>>
>> When I remove the class, everything is fine.
>> When I add a single @Id annotation, everything is fine.
>>
>> This is the entity class and its embedded Id:
>>
>> @Getter
>> @Setter
>> @Entity
>> @Table(name = "PORTFOLIO")
>> public class Portfolio {
>> @EmbeddedId
>> private PortfolioId portfolioId;
>>
>> @Column(name = "NOMINAL")
>> private BigDecimal nominal;
>>
>> @Column(name = "CURRENCY")
>> private String currency;
>>
>> …
>>
>> }
>>
>> @Getter
>> @Setter
>> @Embeddable
>> public class PortfolioId {
>> @Temporal(TemporalType.DATE)
>> @Column(name = "NAV_DATE", nullable = false)
>> private Date navDate;
>>
>> @Column(name = "ISIN", nullable = false, length = 12)
>> private String isin;
>>
>> public PortfolioId() {}
>> …
>> }
>>
>> What’s wrong with it?
>>
>> Björn
>>
>>
>>
>>
>>
>> Am 22.11.2017 um 22:00 schrieb Björn Berg <bj...@gmx.de>:
>>
>> Found the problem. I am using Liquibase CDI extension in my project and a
>> Liquibase producer.
>> If I run migrations before, there seems to be a problem with the
>> datasource and injection of EntityManager.
>>
>> Removing all Liquibase extensions made the project running.
>>
>> Am 21.11.2017 um 23:38 schrieb Romain Manni-Bucau <rmannibucau@gmail.com
>> >:
>>
>> Looks like cdi instance is null in this context. Do you have a sample
>> reproducing it?
>>
>> Le 21 nov. 2017 21:27, "Björn Berg" <bj...@gmx.de> a écrit :
>>
>>> Hi,
>>>
>>> I have tried to create a small application based on Meecrowave and JPA
>>> extension. But when I always try to persist an entity, it fails with a
>>> NullPointerException which I cannot really drill down to find the root
>>> cause.
>>>
>>> First I thought injected EntityManager is null but logging the
>>> EntityManager call told me, that it really exists.
>>> PersistenceUnitInfoBuilder and DataSource is produced like described on
>>> http://openwebbeans.apache.org/meecrowave/meecrowave-jpa/index.html
>>>
>>>
>>> [...]
>>>
>>> Someone can give me a hint what I am doing wrong?
>>>
>>> Kind regards,
>>> Björn
>>>
>>>
>>
>>
>
Re: Using JPA with Microwave fails
Posted by Björn Berg <bj...@gmx.de>.
I am indirectly using OpenJpa with meecrowave-jpa component. @Vetoed does not help and there is no beans.xml.
Seems to be a problem with all kinds of EmbeddedId or IdClass.
I have added my sample to GitHub: https://github.com/rollinhand/meecrowave-jpa-sample
What do you mean with "exclude it from meecrowave option“?
> Am 23.11.2017 um 06:32 schrieb Romain Manni-Bucau <rm...@gmail.com>:
>
> Can depend your jpa provider. Maybe try adding @Vetoed on it or exclude it from meecrowave option or CDI beans.xml excludes.
>
> Le 22 nov. 2017 23:58, "Björn Berg" <bjoern.berg@gmx.de <ma...@gmx.de>> a écrit :
> One addition because my latest post was not right. It is not Liquibase, it is an embedded Id I use in a different class, added to the persistence context.
>
> When I remove the class, everything is fine.
> When I add a single @Id annotation, everything is fine.
>
> This is the entity class and its embedded Id:
>
> @Getter
> @Setter
> @Entity
> @Table(name = "PORTFOLIO")
> public class Portfolio {
> @EmbeddedId
> private PortfolioId portfolioId;
>
> @Column(name = "NOMINAL")
> private BigDecimal nominal;
>
> @Column(name = "CURRENCY")
> private String currency;
>
> …
>
> }
>
> @Getter
> @Setter
> @Embeddable
> public class PortfolioId {
> @Temporal(TemporalType.DATE)
> @Column(name = "NAV_DATE", nullable = false)
> private Date navDate;
>
> @Column(name = "ISIN", nullable = false, length = 12)
> private String isin;
>
> public PortfolioId() {}
> …
> }
>
> What’s wrong with it?
>
> Björn
>
>
>
>
>
>> Am 22.11.2017 um 22:00 schrieb Björn Berg <bjoern.berg@gmx.de <ma...@gmx.de>>:
>>
>> Found the problem. I am using Liquibase CDI extension in my project and a Liquibase producer.
>> If I run migrations before, there seems to be a problem with the datasource and injection of EntityManager.
>>
>> Removing all Liquibase extensions made the project running.
>>
>>> Am 21.11.2017 um 23:38 schrieb Romain Manni-Bucau <rmannibucau@gmail.com <ma...@gmail.com>>:
>>>
>>> Looks like cdi instance is null in this context. Do you have a sample reproducing it?
>>>
>>> Le 21 nov. 2017 21:27, "Björn Berg" <bjoern.berg@gmx.de <ma...@gmx.de>> a écrit :
>>> Hi,
>>>
>>> I have tried to create a small application based on Meecrowave and JPA extension. But when I always try to persist an entity, it fails with a NullPointerException which I cannot really drill down to find the root cause.
>>>
>>> First I thought injected EntityManager is null but logging the EntityManager call told me, that it really exists. PersistenceUnitInfoBuilder and DataSource is produced like described on
>>> http://openwebbeans.apache.org/meecrowave/meecrowave-jpa/index.html <http://openwebbeans.apache.org/meecrowave/meecrowave-jpa/index.html>
>>>
>>>
>>> [...]
>>>
>>> Someone can give me a hint what I am doing wrong?
>>>
>>> Kind regards,
>>> Björn
>>>
>>
>
Re: Using JPA with Microwave fails
Posted by Romain Manni-Bucau <rm...@gmail.com>.
Can depend your jpa provider. Maybe try adding @Vetoed on it or exclude it
from meecrowave option or CDI beans.xml excludes.
Le 22 nov. 2017 23:58, "Björn Berg" <bj...@gmx.de> a écrit :
> One addition because my latest post was not right. It is not Liquibase, it
> is an embedded Id I use in a different class, added to the persistence
> context.
>
> When I remove the class, everything is fine.
> When I add a single @Id annotation, everything is fine.
>
> This is the entity class and its embedded Id:
>
> @Getter
> @Setter
> @Entity
> @Table(name = "PORTFOLIO")
> public class Portfolio {
> @EmbeddedId
> private PortfolioId portfolioId;
>
> @Column(name = "NOMINAL")
> private BigDecimal nominal;
>
> @Column(name = "CURRENCY")
> private String currency;
>
> …
>
> }
>
> @Getter
> @Setter
> @Embeddable
> public class PortfolioId {
> @Temporal(TemporalType.DATE)
> @Column(name = "NAV_DATE", nullable = false)
> private Date navDate;
>
> @Column(name = "ISIN", nullable = false, length = 12)
> private String isin;
>
> public PortfolioId() {}
> …
> }
>
> What’s wrong with it?
>
> Björn
>
>
>
>
>
> Am 22.11.2017 um 22:00 schrieb Björn Berg <bj...@gmx.de>:
>
> Found the problem. I am using Liquibase CDI extension in my project and a
> Liquibase producer.
> If I run migrations before, there seems to be a problem with the
> datasource and injection of EntityManager.
>
> Removing all Liquibase extensions made the project running.
>
> Am 21.11.2017 um 23:38 schrieb Romain Manni-Bucau <rm...@gmail.com>:
>
> Looks like cdi instance is null in this context. Do you have a sample
> reproducing it?
>
> Le 21 nov. 2017 21:27, "Björn Berg" <bj...@gmx.de> a écrit :
>
>> Hi,
>>
>> I have tried to create a small application based on Meecrowave and JPA
>> extension. But when I always try to persist an entity, it fails with a
>> NullPointerException which I cannot really drill down to find the root
>> cause.
>>
>> First I thought injected EntityManager is null but logging the
>> EntityManager call told me, that it really exists.
>> PersistenceUnitInfoBuilder and DataSource is produced like described on
>> http://openwebbeans.apache.org/meecrowave/meecrowave-jpa/index.html
>>
>>
>> [...]
>>
>> Someone can give me a hint what I am doing wrong?
>>
>> Kind regards,
>> Björn
>>
>>
>
>
Re: Using JPA with Microwave fails
Posted by Björn Berg <bj...@gmx.de>.
One addition because my latest post was not right. It is not Liquibase, it is an embedded Id I use in a different class, added to the persistence context.
When I remove the class, everything is fine.
When I add a single @Id annotation, everything is fine.
This is the entity class and its embedded Id:
@Getter
@Setter
@Entity
@Table(name = "PORTFOLIO")
public class Portfolio {
@EmbeddedId
private PortfolioId portfolioId;
@Column(name = "NOMINAL")
private BigDecimal nominal;
@Column(name = "CURRENCY")
private String currency;
…
}
@Getter
@Setter
@Embeddable
public class PortfolioId {
@Temporal(TemporalType.DATE)
@Column(name = "NAV_DATE", nullable = false)
private Date navDate;
@Column(name = "ISIN", nullable = false, length = 12)
private String isin;
public PortfolioId() {}
…
}
What’s wrong with it?
Björn
> Am 22.11.2017 um 22:00 schrieb Björn Berg <bj...@gmx.de>:
>
> Found the problem. I am using Liquibase CDI extension in my project and a Liquibase producer.
> If I run migrations before, there seems to be a problem with the datasource and injection of EntityManager.
>
> Removing all Liquibase extensions made the project running.
>
>> Am 21.11.2017 um 23:38 schrieb Romain Manni-Bucau <rmannibucau@gmail.com <ma...@gmail.com>>:
>>
>> Looks like cdi instance is null in this context. Do you have a sample reproducing it?
>>
>> Le 21 nov. 2017 21:27, "Björn Berg" <bjoern.berg@gmx.de <ma...@gmx.de>> a écrit :
>> Hi,
>>
>> I have tried to create a small application based on Meecrowave and JPA extension. But when I always try to persist an entity, it fails with a NullPointerException which I cannot really drill down to find the root cause.
>>
>> First I thought injected EntityManager is null but logging the EntityManager call told me, that it really exists. PersistenceUnitInfoBuilder and DataSource is produced like described on
>> http://openwebbeans.apache.org/meecrowave/meecrowave-jpa/index.html <http://openwebbeans.apache.org/meecrowave/meecrowave-jpa/index.html>
>>
>>
>> [...]
>>
>> Someone can give me a hint what I am doing wrong?
>>
>> Kind regards,
>> Björn
>>
>
Re: Using JPA with Microwave fails
Posted by Björn Berg <bj...@gmx.de>.
Found the problem. I am using Liquibase CDI extension in my project and a Liquibase producer.
If I run migrations before, there seems to be a problem with the datasource and injection of EntityManager.
Removing all Liquibase extensions made the project running.
> Am 21.11.2017 um 23:38 schrieb Romain Manni-Bucau <rm...@gmail.com>:
>
> Looks like cdi instance is null in this context. Do you have a sample reproducing it?
>
> Le 21 nov. 2017 21:27, "Björn Berg" <bjoern.berg@gmx.de <ma...@gmx.de>> a écrit :
> Hi,
>
> I have tried to create a small application based on Meecrowave and JPA extension. But when I always try to persist an entity, it fails with a NullPointerException which I cannot really drill down to find the root cause.
>
> First I thought injected EntityManager is null but logging the EntityManager call told me, that it really exists. PersistenceUnitInfoBuilder and DataSource is produced like described on
> http://openwebbeans.apache.org/meecrowave/meecrowave-jpa/index.html <http://openwebbeans.apache.org/meecrowave/meecrowave-jpa/index.html>
>
>
> [...]
>
> Someone can give me a hint what I am doing wrong?
>
> Kind regards,
> Björn
>
Re: Using JPA with Microwave fails
Posted by Romain Manni-Bucau <rm...@gmail.com>.
Looks like cdi instance is null in this context. Do you have a sample
reproducing it?
Le 21 nov. 2017 21:27, "Björn Berg" <bj...@gmx.de> a écrit :
> Hi,
>
> I have tried to create a small application based on Meecrowave and JPA
> extension. But when I always try to persist an entity, it fails with a
> NullPointerException which I cannot really drill down to find the root
> cause.
>
> First I thought injected EntityManager is null but logging the
> EntityManager call told me, that it really exists.
> PersistenceUnitInfoBuilder and DataSource is produced like described on
> http://openwebbeans.apache.org/meecrowave/meecrowave-jpa/index.html
>
>
> The called InstrumentDao looks like this:
> @ApplicationScoped
> @Jpa(transactional = false)
> public class InstrumentDao {
> @Inject
> @Unit(name = "depot")
> private EntityManager em;
>
> @Jpa
> public void save (Instrument instrument) {
> em.merge(instrument);
> }
> …
> }
>
> The entity Instrument is defined like this:
> @Entity
> @Table(name = "INSTRUMENT")
> public class Instrument implements Serializable {
> @Id
> private String isin;
> private String name;
>
> public Instrument() {
>
> }
> …
> }
>
> Stacktrace is like following:
> Caused by: java.lang.NullPointerException
> at org.apache.meecrowave.jpa.internal.EntityManagerBean.
> destroy(EntityManagerBean.java:95) ~[meecrowave-jpa-1.1.0.jar:1.1.0]
> at org.apache.meecrowave.jpa.internal.EntityManagerBean.
> destroy(EntityManagerBean.java:29) ~[meecrowave-jpa-1.1.0.jar:1.1.0]
> at org.apache.webbeans.component.third.ThirdpartyBeanImpl.
> destroy(ThirdpartyBeanImpl.java:113) ~[openwebbeans-impl-2.0.1.jar:2.0.1]
> at org.apache.meecrowave.jpa.internal.EntityManagerContext$
> ThreadContext.doDestroy(EntityManagerContext.java:130)
> ~[meecrowave-jpa-1.1.0.jar:1.1.0]
> at org.apache.meecrowave.jpa.internal.EntityManagerContext$
> ThreadContext.lambda$exit$1(EntityManagerContext.java:140)
> ~[meecrowave-jpa-1.1.0.jar:1.1.0]
> at java.util.HashMap.forEach(HashMap.java:1280) ~[?:1.8.0_77]
> at org.apache.meecrowave.jpa.internal.EntityManagerContext$
> ThreadContext.exit(EntityManagerContext.java:140)
> ~[meecrowave-jpa-1.1.0.jar:1.1.0]
> at org.apache.meecrowave.jpa.internal.EntityManagerContext$
> ThreadContext.access$300(EntityManagerContext.java:94)
> ~[meecrowave-jpa-1.1.0.jar:1.1.0]
> at org.apache.meecrowave.jpa.internal.EntityManagerContext.
> exit(EntityManagerContext.java:52) ~[meecrowave-jpa-1.1.0.jar:1.1.0]
> at org.apache.meecrowave.jpa.internal.JpaInterceptorBase.inTransaction(JpaInterceptorBase.java:40)
> ~[meecrowave-jpa-1.1.0.jar:1.1.0]
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> ~[?:1.8.0_77]
> at sun.reflect.NativeMethodAccessorImpl.invoke(
> NativeMethodAccessorImpl.java:62) ~[?:1.8.0_77]
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_77]
> at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_77]
> at org.apache.webbeans.component.InterceptorBean.intercept(InterceptorBean.java:136)
> ~[openwebbeans-impl-2.0.1.jar:2.0.1]
> at org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(
> InterceptorInvocationContext.java:65) ~[openwebbeans-impl-2.0.1.jar:2.0.1]
> at org.apache.webbeans.intercept.DefaultInterceptorHandler.invoke(
> DefaultInterceptorHandler.java:139) ~[openwebbeans-impl-2.0.1.jar:2.0.1]
> at org.kivio.depot.dao.InstrumentDao$$OwbInterceptProxy0.save(org/
> kivio/depot/dao/InstrumentDao.java) ~[?:?]
> at org.kivio.depot.dao.InstrumentDao$$OwbNormalScopeProxy0.save(org/
> kivio/depot/dao/InstrumentDao.java) ~[?:?]
> at org.kivio.depot.service.DepotService.addInstrument(DepotService.java:69)
> ~[classes/:?]
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> ~[?:1.8.0_77]
> at sun.reflect.NativeMethodAccessorImpl.invoke(
> NativeMethodAccessorImpl.java:62) ~[?:1.8.0_77]
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_77]
> at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_77]
>
> Someone can give me a hint what I am doing wrong?
>
> Kind regards,
> Björn
>
>