2
respostas

entityManager Criteria NullPointerException injection Spring boot

Está dando NullPointerException na linha do entity manager. Estou usando Spring boot.


java.lang.NullPointerException: null
    at br.com.ecommerce.service.ProdutoService.find(ProdutoService.java:175) ~[classes/:na]
    at br.com.ecommerce.resource.ProdutoResource.find(ProdutoResource.java:84) ~[classes/:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_181]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_181]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_181]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_181]
...
    @PersistenceContext
    protected EntityManager manager;
public List<Produto> find(Integer page, Integer size, boolean sort, String attribute, String value) {
        CriteriaBuilder criteriaBuilder = manager.getCriteriaBuilder();
    }

A mesma função no commandRunner funciona. Agora estou testando no browser via jquery e rest mesmo, tentei adicionar ao application.properties isso mas nao funcionou:

spring.jpa.open-in-view=true
2 respostas

Oi Antonio,

Como você configurou o entity manager? Mais importante ainda, como está sendo feito a injeção de dependência do mesmo?

Então, é injeção via @PersistenceContext, . Não fiz nenhuma configuração de entity manager, pode dar mais detalhes?

@PersistenceContext
    protected EntityManager manager;

public List<Produto> find(Integer page, Integer size, boolean sort, String attribute, String value) {
        CriteriaBuilder criteriaBuilder = manager.getCriteriaBuilder();
    }
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=
spring.datasource.url=jdbc\:mysql\://localhost/ecommerce
spring.jpa.hibernate.ddl=true
spring.jpa.hibernate.ddl-auto=create
spring.jpa.show-sql=true
spring.jooq.sql-dialect=org.hibernate.dialect.MySQL5Dialect

spring.jpa.open-in-view=false

Pelo visto empaquei mesmo, procurei a internet inteira, mais de 100 posts de nullPointer devo ter visto. Pior que não tem como fazer uma query um pouco mais complexa sem o entityManager. É vital.

Se alguém puder me ajudar eu agradeço.

Ele está injetando certo, no CommandRunner funciona, é somente no serviço rest que não funciona, como eu instancio um novo entitymanager no spring boot?