Injetar dependências para o GenericDao

2 respostas Resolvido
java
P

Amigos…

Tenho um GenericDao que funciona bem… mas gostaria de melhorá-lo…

public abstract class GenericDao< T > implements IDao< T > {

@PersistenceContext
protected EntityManager em;

protected Class<T> clazz;

protected CriteriaBuilder builder;
protected CriteriaQuery<T> query;
protected Root<T> root;

public GenericDao(Class<T> clazz){
 this.clazz = clazz;
}
....

Gostaria de injetar os atributos

protected CriteriaBuilder builder;
protected CriteriaQuery<T> query;
protected Root<T> root;

Por que se tento iniciá-los no contrutor, tenho erro. Acredito por que o JPA ou Spring ainda não injetou o EntityManager através do @PersistenceContext.

Como gambiarra tenho um método que chamo a cada outro método do Dao:

protected void criteriaObjects() {

this.builder = em.getCriteriaBuilder();

this.query = builder.createQuery(clazz);

this.root = query.from(clazz);

}

@Override
public T findById(int id) {

criteriaObjects();
  ....

Seria possível fazer isso?

2 Respostas

rickfrocha
Solucao aceita

Opa. . blz? Cara… faz assim…cria um método público, sem retorno e sem parâmetros. Chama ele de init por exemplo e anota ele com @postConstruct. Neste método vc inicializa o seu criteriaBuilder.

P

Blz…foi…obrigado!

Criado 2 de novembro de 2016
Ultima resposta 2 de nov. de 2016
Respostas 2
Participantes 2