Um erro ocorreu ao realizar a injeção de recurso no bean gerenciado paisControler
Ao tentar iniciar uma página do sistema mostra este erro.
Vou colocar os códigos:
DAO
package br.com.netsoft.desif.dao.endereco;
import java.io.Serializable;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import br.com.netsoft.desif.model.endereco.PaisEntity;
public class PaisDao implements Serializable {
private static final long serialVersionUID = 1402488530698938353L;
final private String hql = " p FROM PaisEntity p ";
EntityManager em;
public List<PaisEntity> listarPaises() {
StringBuilder hqlSelect = new StringBuilder(hql);
final String query = "SELECT " + hqlSelect;
Query querySelect = em.createQuery(query);
@SuppressWarnings("unchecked")
List<PaisEntity> resultList = querySelect.getResultList();
return resultList;
}
}
ENTITY
package br.com.netsoft.desif.model.endereco;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
public class PaisEntity implements Serializable {
private static final long serialVersionUID = 7784827196506672790L;
private Long id;
private String descricao;
@Id
@Column(name = "pai_id")
@SequenceGenerator(name = "enderecos.end_pais_pai_id_seq", sequenceName = "enderecos.end_pais_pai_id_seq", allocationSize = 1)
@GeneratedValue(generator = "enderecos.end_pais_pai_id_seq", strategy = GenerationType.SEQUENCE)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Column(name = "pai_descricao")
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
}
CONTROLLER
package br.com.netsoft.desif.controler.endereco;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.enterprise.context.RequestScoped;
import javax.faces.bean.ManagedBean;
import br.com.netsoft.desif.dao.endereco.PaisDao;
import br.com.netsoft.desif.model.endereco.PaisEntity;
@ManagedBean(name = "paisControler")
@RequestScoped
public class PaisControler extends PaisEntity {
private static final long serialVersionUID = -8396738159447021720L;
private List<PaisEntity> paises;
private PaisDao paisDao;
public List<PaisEntity> getPaises() {
if (paises == null) {
return new ArrayList<PaisEntity>();
}
return paises;
}
public void setPaises(List<PaisEntity> paises) {
this.paises = paises;
}
@PostConstruct
public void init() {
System.out.println("Página inicial de países.");
@SuppressWarnings("unused")
List<PaisEntity> paisesBusca = paisDao.listarPaises();
ArrayList<PaisEntity> paises = (ArrayList<PaisEntity>) paisDao.listarPaises();
for (Iterator<?> iterator = paises.iterator(); iterator.hasNext();) {
PaisEntity pais = (PaisEntity) iterator.next();
pais.setId(pais.getId());
pais.setDescricao(pais.getDescricao());
paises.add(pais);
}
this.setPaises(paises);
}
public String getMensagem() {
return "Teste";
}
}
VISÃO
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>Hello JSF!</title>
</h:head>
<h:body>
#{paisControler.mensagem}
<h:dataTable var="pais" value="#{paisControler.paises}">
<h:column headerText="Id">
<h:outputText value="#{pais.id}" />
</h:column>
<h:column headerText="Year">
<h:outputText value="#{pais.descricao}" />
</h:column>
</h:dataTable>
</h:body>
</html>
Erro:
Vou colocar os códigos:
DAO
package br.com.netsoft.desif.dao.endereco;
import java.io.Serializable;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import br.com.netsoft.desif.model.endereco.PaisEntity;
public class PaisDao implements Serializable {
private static final long serialVersionUID = 1402488530698938353L;
final private String hql = " p FROM PaisEntity p ";
EntityManager em;
public List<PaisEntity> listarPaises() {
StringBuilder hqlSelect = new StringBuilder(hql);
final String query = "SELECT " + hqlSelect;
Query querySelect = em.createQuery(query);
@SuppressWarnings("unchecked")
List<PaisEntity> resultList = querySelect.getResultList();
return resultList;
}
}
ENTITY
package br.com.netsoft.desif.model.endereco;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
public class PaisEntity implements Serializable {
private static final long serialVersionUID = 7784827196506672790L;
private Long id;
private String descricao;
@Id
@Column(name = "pai_id")
@SequenceGenerator(name = "enderecos.end_pais_pai_id_seq", sequenceName = "enderecos.end_pais_pai_id_seq", allocationSize = 1)
@GeneratedValue(generator = "enderecos.end_pais_pai_id_seq", strategy = GenerationType.SEQUENCE)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Column(name = "pai_descricao")
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
}
CONTROLLER
package br.com.netsoft.desif.controler.endereco;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.enterprise.context.RequestScoped;
import javax.faces.bean.ManagedBean;
import br.com.netsoft.desif.dao.endereco.PaisDao;
import br.com.netsoft.desif.model.endereco.PaisEntity;
@ManagedBean(name = "paisControler")
@RequestScoped
public class PaisControler extends PaisEntity {
private static final long serialVersionUID = -8396738159447021720L;
private List<PaisEntity> paises;
private PaisDao paisDao;
public List<PaisEntity> getPaises() {
if (paises == null) {
return new ArrayList<PaisEntity>();
}
return paises;
}
public void setPaises(List<PaisEntity> paises) {
this.paises = paises;
}
@PostConstruct
public void init() {
System.out.println("Página inicial de países.");
@SuppressWarnings("unused")
List<PaisEntity> paisesBusca = paisDao.listarPaises();
ArrayList<PaisEntity> paises = (ArrayList<PaisEntity>) paisDao.listarPaises();
for (Iterator<?> iterator = paises.iterator(); iterator.hasNext();) {
PaisEntity pais = (PaisEntity) iterator.next();
pais.setId(pais.getId());
pais.setDescricao(pais.getDescricao());
paises.add(pais);
}
this.setPaises(paises);
}
public String getMensagem() {
return "Teste";
}
}
VISÃO
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>Hello JSF!</title>
</h:head>
<h:body>
#{paisControler.mensagem}
<h:dataTable var="pais" value="#{paisControler.paises}">
<h:column headerText="Id">
<h:outputText value="#{pais.id}" />
</h:column>
<h:column headerText="Year">
<h:outputText value="#{pais.descricao}" />
</h:column>
</h:dataTable>
</h:body>
</html>
Erro:
mar 21, 2017 8:08:40 AM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException GRAVE: Error Rendering View[/public/index.xhtml] javax.el.ELException: /public/index.xhtml: Um erro ocorreu ao realizar a injeção de recurso no bean gerenciado paisControler at com.sun.faces.facelets.compiler.TextInstruction.write(TextInstruction.java:90) at com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:82) at com.sun.faces.facelets.compiler.UILeaf.encodeAll(UILeaf.java:183) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859) at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:443) at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:798) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1441) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Unknown Source) Caused by: com.sun.faces.mgbean.ManagedBeanCreationException: Um erro ocorreu ao realizar a injeção de recurso no bean gerenciado paisControler at com.sun.faces.mgbean.BeanBuilder.invokePostConstruct(BeanBuilder.java:227) at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:103) at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409) at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269) at com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244) at com.sun.faces.el.ManagedBeanELResolv
Guilherme Lopes
Curtidas 0
Respostas
Cassius Magalhães
21/03/2017
Olá,
Primeiro, se é um projeto novo, então a recomendação é usar o conteiner CDI ao invés do conteiner JSF, assim @Named ao invés de @ManagedBean.
Segundo, você não está instanciando ou injetando o EntityManager no DAO corretamente.
Terceiro, você não está instanciando ou injetando o DAO no Controller corretamente.
Primeiro, se é um projeto novo, então a recomendação é usar o conteiner CDI ao invés do conteiner JSF, assim @Named ao invés de @ManagedBean.
Segundo, você não está instanciando ou injetando o EntityManager no DAO corretamente.
Terceiro, você não está instanciando ou injetando o DAO no Controller corretamente.
GOSTEI 0
Guilherme Lopes
21/03/2017
Obrigado pelo retorno.
Como estou estudando, há possibilidade de me mostrar o correto ?
Como estou estudando, há possibilidade de me mostrar o correto ?
GOSTEI 0
Guilherme Lopes
21/03/2017
Meu pom.xml está com o CDI
<!-- CDI --> <dependency> <groupId>javax.enterprise</groupId> <artifactId>cdi-api</artifactId> <version>1.2</version> <scope>provided</scope> </dependency>
GOSTEI 0
Cassius Magalhães
21/03/2017
Olá,
Procure pesquisar no próprio site da DevMedia: https://www.devmedia.com.br/configurando-o-cdi-em-projetos-java/37649
Tente pesquisar agora como injetar o EntityManager.
Procure pesquisar no próprio site da DevMedia: https://www.devmedia.com.br/configurando-o-cdi-em-projetos-java/37649
Tente pesquisar agora como injetar o EntityManager.
GOSTEI 0
Guilherme Lopes
21/03/2017
Fiz assim, mas está dando este erro
public class PaisDao implements Serializable {
private static final long serialVersionUID = 1402488530698938353L;
final private String hql = " p FROM PaisEntity p ";
EntityManager em;
public List<PaisEntity> listarPaises() {
StringBuilder hqlSelect = new StringBuilder(hql);
final String query = "SELECT" + hqlSelect;
EntityManagerFactory factory = Persistence.createEntityManagerFactory("PaisEntity");
EntityManager manager = factory.createEntityManager();
Query querySelect = manager.createQuery(query);
@SuppressWarnings("unchecked")
List<PaisEntity> resultList = querySelect.getResultList();
return resultList;
}
erro:
public class PaisDao implements Serializable {
private static final long serialVersionUID = 1402488530698938353L;
final private String hql = " p FROM PaisEntity p ";
EntityManager em;
public List<PaisEntity> listarPaises() {
StringBuilder hqlSelect = new StringBuilder(hql);
final String query = "SELECT" + hqlSelect;
EntityManagerFactory factory = Persistence.createEntityManagerFactory("PaisEntity");
EntityManager manager = factory.createEntityManager();
Query querySelect = manager.createQuery(query);
@SuppressWarnings("unchecked")
List<PaisEntity> resultList = querySelect.getResultList();
return resultList;
}
erro:
Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named PaisEntity at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32) at br.com.netsoft.desif.dao.endereco.PaisDao.listarPaises(PaisDao.java:28) at br.com.netsoft.desif.controler.endereco.PaisControler.init(PaisControler.java:43) ... 54 more
GOSTEI 0
Cassius Magalhães
21/03/2017
Olá,
Você pode criar uma unidade de persistência (persistence unit) persistence.xml com as informação do banco de dados. E então usar o nome da unidade de persistência na sua fábrica (factory) de EntityManager.
Você pode criar uma unidade de persistência (persistence unit) persistence.xml com as informação do banco de dados. E então usar o nome da unidade de persistência na sua fábrica (factory) de EntityManager.
GOSTEI 0
Guilherme Lopes
21/03/2017
Cassius, mas eu fiz ou não ?
Ele está dando erro na linha
Ele está dando erro na linha
Query querySelect = manager.createQuery(query);
GOSTEI 0
Angelo Santos
21/03/2017
Olá Guilherme Lopes,
Sua entidade PaisEntity deve esta anotada com @Entity.
Lembrando que se você não utilizar a anotação @Table assume-se que o nome da sua tabela é o mesmo que o nome da classe. Caso não seja utilize a anotação @Table especificando o nome da tabela no banco de dados.
Espero ter ajudado. Bons estudos
Sua entidade PaisEntity deve esta anotada com @Entity.
@Entity public class PaisEntity implements Serializable { ... }
Lembrando que se você não utilizar a anotação @Table assume-se que o nome da sua tabela é o mesmo que o nome da classe. Caso não seja utilize a anotação @Table especificando o nome da tabela no banco de dados.
Espero ter ajudado. Bons estudos
GOSTEI 0
Guilherme Lopes
21/03/2017
Desculpe, mas a entity está assim:
package br.com.netsoft.desif.model.endereco; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.SequenceGenerator; import javax.persistence.Table; /** * Paises */ @Entity @Table(name = "enderecos.end_pais") public class PaisEntity implements Serializable { private static final long serialVersionUID = 7784827196506672790L; private Long id; private String descricao; @Id @Column(name = "pai_id") @SequenceGenerator(name = "enderecos.end_pais_pai_id_seq", sequenceName = "enderecos.end_pais_pai_id_seq", allocationSize = 1) @GeneratedValue(generator = "enderecos.end_pais_pai_id_seq", strategy = GenerationType.SEQUENCE) public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Column(name = "pai_descricao") public String getDescricao() { return descricao; } public void setDescricao(String descricao) { this.descricao = descricao; } }
GOSTEI 0
Angelo Santos
21/03/2017
Guilherme Lopes
Verifica se você esta utilizando hibernate-entitymanager-4.x.x.jar ou 5.x.x no seu classpath. Você esta utilizando Maven, se estiver como esta seu arquivo pom.xml?
Verifica se você esta utilizando hibernate-entitymanager-4.x.x.jar ou 5.x.x no seu classpath. Você esta utilizando Maven, se estiver como esta seu arquivo pom.xml?
GOSTEI 0
Guilherme Lopes
21/03/2017
arquivo pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>br.com.netsoft</groupId> <artifactId>desif</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>desif</name> <description>desif</description> <properties> <java-version>1.8</java-version> <org.springframework-version>4.1.0.RELEASE</org.springframework-version> <org.aspectj-version>1.8.1</org.aspectj-version> <org.slf4j-version>1.6.6</org.slf4j-version> </properties> <dependencies> <!-- JSF --> <dependency> <groupId>com.sun.faces</groupId> <artifactId>jsf-api</artifactId> <version>2.2.13</version> </dependency> <!-- JSF --> <dependency> <groupId>com.sun.faces</groupId> <artifactId>jsf-impl</artifactId> <version>2.2.13</version> </dependency> <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>1.0.0.GA</version> </dependency> <!-- PrimeFaces --> <dependency> <groupId>org.primefaces</groupId> <artifactId>primefaces</artifactId> <version>5.3</version> </dependency> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.2.2</version> </dependency> <!-- AspectJ --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>${org.aspectj-version}</version> </dependency> <!-- Logging --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${org.slf4j-version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>${org.slf4j-version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${org.slf4j-version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.15</version> <exclusions> <exclusion> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> </exclusion> <exclusion> <groupId>javax.jms</groupId> <artifactId>jms</artifactId> </exclusion> <exclusion> <groupId>com.sun.jdmk</groupId> <artifactId>jmxtools</artifactId> </exclusion> <exclusion> <groupId>com.sun.jmx</groupId> <artifactId>jmxri</artifactId> </exclusion> </exclusions> <scope>runtime</scope> </dependency> <!-- @Inject --> <dependency> <groupId>javax.inject</groupId> <artifactId>javax.inject</artifactId> <version>1</version> </dependency> <!-- CDI --> <dependency> <groupId>javax.enterprise</groupId> <artifactId>cdi-api</artifactId> <version>1.2</version> <scope>provided</scope> </dependency> <!--JBoss/Weld implementação de referência do CDI para Servlet Container(Exemplo:Tomcat) --> <dependency> <groupId>org.jboss.weld.servlet</groupId> <artifactId>weld-servlet</artifactId> <version>2.2.6.Final</version> <scope>runtime</scope> </dependency> <!-- Métodos uteis para manipulação de String, métodos e etc --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.4</version> </dependency> <!-- PROVIDER JPA(HIBERNATE) --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>4.3.0.Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>4.1.0.Final</version> </dependency> <dependency> <groupId>org.hibernate.javax.persistence</groupId> <artifactId>hibernate-jpa-2.0-api</artifactId> <version>1.0.0.Final</version> </dependency> <!-- Servlet --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- DEPENDENCIA Postgres --> <dependency> <groupId>postgresql</groupId> <artifactId>postgresql</artifactId> <version>9.1-901.jdbc4</version> </dependency> <!-- usado pelo Weld --> <dependency> <groupId>org.jboss</groupId> <artifactId>jandex</artifactId> <version>1.2.2.Final</version> </dependency> <!-- Manipulação de XML --> <dependency> <groupId>jdom</groupId> <artifactId>jdom</artifactId> <version>1.1</version> </dependency> <!-- Test --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.7</version> <scope>test</scope> </dependency> <!-- Codehaus Jackson --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.5.1</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.5.1</version> </dependency> </dependencies> <build> <finalName>desif</finalName> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2.1</version> <configuration> <mainClass>org.test.int1.Main</mainClass> </configuration> </plugin> <plugin> <artifactId>maven-eclipse-plugin</artifactId> <version>2.9</version> <configuration> <additionalProjectnatures> <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature> </additionalProjectnatures> <additionalBuildcommands> <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand> </additionalBuildcommands> <downloadSources>true</downloadSources> <downloadJavadocs>true</downloadJavadocs> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> </project>
GOSTEI 0
Angelo Santos
21/03/2017
Guilherme Lopes, Boa Tarde !
Então, o nome da sua tabela do banco postgresql é "enderecos.end_pais" ? Quem é endereços ? É um schema ?
Sua entidade vai ficar assim:
Então, o nome da sua tabela do banco postgresql é "enderecos.end_pais" ? Quem é endereços ? É um schema ?
Sua entidade vai ficar assim:
package br.com.netsoft.desif.model.endereco; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.SequenceGenerator; import javax.persistence.Table; /** * Paises */ @Entity @Table(name = "end_pais", schema = enderecos) public class PaisEntity implements Serializable { private static final long serialVersionUID = 7784827196506672790L; private Long id; private String descricao; @Id @Column(name = "pai_id") @SequenceGenerator(name = "end_pais_pai_id_seq", sequenceName = "end_pais_pai_id_seq", allocationSize = 1) @GeneratedValue(generator = "end_pais_pai_id_seq", strategy = GenerationType.SEQUENCE) public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Column(name = "pai_descricao") public String getDescricao() { return descricao; } public void setDescricao(String descricao) { this.descricao = descricao; } }
GOSTEI 0
Angelo Santos
21/03/2017
Corrigindo:
@Table(name = "end_pais", schema = "enderecos")
GOSTEI 0
Guilherme Lopes
21/03/2017
Está dando erro quando chega nesta linha
EntityManagerFactory factory = Persistence.createEntityManagerFactory("PaisEntity");
Página inicial de países. mar 22, 2017 2:10:27 PM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException GRAVE: Error Rendering View[/index.xhtml] javax.el.ELException: /index.xhtml: Um erro ocorreu ao realizar a injeção de recurso no bean gerenciado paisControler at com.sun.faces.facelets.compiler.TextInstruction.write(TextInstruction.java:90) at com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:82) at com.sun.faces.facelets.compiler.UILeaf.encodeAll(UILeaf.java:183) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859) at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:443) at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:798) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1441) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Unknown Source) Caused by: com.sun.faces.mgbean.ManagedBeanCreationException: Um erro ocorreu ao realizar a injeção de recurso no bean gerenciado paisControler at com.sun.faces.mgbean.BeanBuilder.invokePostConstruct(BeanBuilder.java:227) at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:103) at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409) at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269) at com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244) at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116) at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176) at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:94) at org.apache.el.parser.AstValue.getValue(AstValue.java:137) at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184) at org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:50) at com.sun.faces.facelets.el.ELText$ELTextVariable.writeText(ELText.java:227) at com.sun.faces.facelets.el.ELText$ELTextComposite.writeText(ELText.java:150) at com.sun.faces.facelets.compiler.TextInstruction.write(TextInstruction.java:85) ... 33 more Caused by: com.sun.faces.spi.InjectionProviderException at com.sun.faces.vendor.WebContainerInjectionProvider.invokeAnnotatedMethod(WebContainerInjectionProvider.java:115) at com.sun.faces.vendor.WebContainerInjectionProvider.invokePostConstruct(WebContainerInjectionProvider.java:95) at com.sun.faces.mgbean.BeanBuilder.invokePostConstruct(BeanBuilder.java:221) ... 47 more Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.sun.faces.vendor.WebContainerInjectionProvider.invokeAnnotatedMethod(WebContainerInjectionProvider.java:113) ... 49 more Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named PaisEntity at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32) at br.com.netsoft.desif.dao.endereco.PaisDao.listarPaises(PaisDao.java:28) at br.com.netsoft.desif.controler.endereco.PaisControler.init(PaisControler.java:43) ... 54 more mar 22, 2017 2:10:27 PM org.apache.catalina.core.StandardWrapperValve invoke GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/desif] threw exception [Um erro ocorreu ao realizar a injeção de recurso no bean gerenciado paisControler] with root cause javax.persistence.PersistenceException: No Persistence provider for EntityManager named PaisEntity at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32) at br.com.netsoft.desif.dao.endereco.PaisDao.listarPaises(PaisDao.java:28) at br.com.netsoft.desif.controler.endereco.PaisControler.init(PaisControler.java:43) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.sun.faces.vendor.WebContainerInjectionProvider.invokeAnnotatedMethod(WebContainerInjectionProvider.java:113) at com.sun.faces.vendor.WebContainerInjectionProvider.invokePostConstruct(WebContainerInjectionProvider.java:95) at com.sun.faces.mgbean.BeanBuilder.invokePostConstruct(BeanBuilder.java:221) at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:103) at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409) at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269) at com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244) at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116) at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176) at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:94) at org.apache.el.parser.AstValue.getValue(AstValue.java:137) at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184) at org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:50) at com.sun.faces.facelets.el.ELText$ELTextVariable.wri
GOSTEI 0
Guilherme Lopes
21/03/2017
O erro está aqui
Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named PaisEntity
GOSTEI 0
Guilherme Lopes
21/03/2017
Sim disse que não esta persistindo. Imaginei.
Olha meu persitence.xml
Persistence
Entendo que está correto.
Será que minha configuração está errada ?
Web.xml
context.xml
beans.xml
Olha meu persitence.xml
Persistence
Entendo que está correto.
Será que minha configuração está errada ?
Web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <welcome-file-list> <welcome-file>index.xhtml</welcome-file> </welcome-file-list> <context-param> <param-name>facelets.SKIP_COMMENTS</param-name> <param-value>true</param-value> </context-param> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.xhtml</url-pattern> </servlet-mapping> <!-- WELD --> <listener> <listener-class>org.jboss.weld.environment.servlet.Listener</listener-class> </listener> <session-config> <session-timeout>30</session-timeout> </session-config> <resource-ref> <description>DataSource</description> <res-ref-name>jdbc/desif_utf8</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> </web-app>
context.xml
<?xml version="1.0" encoding="UTF-8"?> <Context antiJARLocking="true" path="/tomcat-test"> <Resource name="BeanManager" auth="Container" type="javax.enterprise.inject.spi.BeanManager" factory="org.jboss.weld.resources.ManagerObjectFactory" /> <Resource name="jdbc/myimage" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="40" maxWait="1000" username="postgres" password="Maker@1" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/desif_utf8" /> </Context>
beans.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd"> </beans>
GOSTEI 0
Guilherme Lopes
21/03/2017
persitence.xml
<?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0"> <persistence-unit name="desif" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <non-jta-data-source>java:/desifutf8</non-jta-data-source> <!-- Enderecos --> <class>br.com.netsoft.desif.model.endereco.PaisEntity</class> <properties> <property name="hibernate.hbm2ddl.auto" value="none" /> <property name="hibernate.show_sql" value="update" /> <property name="show_sql" value="true" /> <property name="hibernate.format_sql" value="true" /> <property name="hibernate.connection.autocommit" value="false" /> <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" /> </properties> </persistence-unit> </persistence>
GOSTEI 0
Angelo Santos
21/03/2017
Guilherme Lopes, Boa Tarde !
O arquivo persistence.xml esta nesse local: src\\main\\java\\META-INF\\persistence.xml ?
Caso não esteja mova de META-INF/persistence.xml para este local.
O arquivo persistence.xml esta nesse local: src\\main\\java\\META-INF\\persistence.xml ?
Caso não esteja mova de META-INF/persistence.xml para este local.
GOSTEI 0
Angelo Santos
21/03/2017
Realiza a alteração que te indiquei e verifica se funciona.
Então, o nome da sua tabela do banco postgresql é "enderecos.end_pais" ? Quem é endereços ? É um schema ?
Sua entidade vai ficar assim:
Sua entidade vai ficar assim:
package br.com.netsoft.desif.model.endereco; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.SequenceGenerator; import javax.persistence.Table; /** * Paises */ @Entity @Table(name = "end_pais", schema = "enderecos") public class PaisEntity implements Serializable { private static final long serialVersionUID = 7784827196506672790L; private Long id; private String descricao; @Id @Column(name = "pai_id") @SequenceGenerator(name = "end_pais_pai_id_seq", sequenceName = "end_pais_pai_id_seq", allocationSize = 1) @GeneratedValue(generator = "end_pais_pai_id_seq", strategy = GenerationType.SEQUENCE) public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Column(name = "pai_descricao") public String getDescricao() { return descricao; } public void setDescricao(String descricao) { this.descricao = descricao; } }
GOSTEI 0
Guilherme Lopes
21/03/2017
Entendo que está igual
package br.com.netsoft.desif.model.endereco;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
/**
* Paises
*/
@Entity
@Table(name = "end_pais", schema = "enderecos")
public class PaisEntity implements Serializable {
private static final long serialVersionUID = 7784827196506672790L;
private Long id;
private String descricao;
@Id
@Column(name = "pai_id")
@SequenceGenerator(name = "enderecos.end_pais_pai_id_seq", sequenceName = "enderecos.end_pais_pai_id_seq", allocationSize = 1)
@GeneratedValue(generator = "enderecos.end_pais_pai_id_seq", strategy = GenerationType.SEQUENCE)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Column(name = "pai_descricao")
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
}
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
/**
* Paises
*/
@Entity
@Table(name = "end_pais", schema = "enderecos")
public class PaisEntity implements Serializable {
private static final long serialVersionUID = 7784827196506672790L;
private Long id;
private String descricao;
@Id
@Column(name = "pai_id")
@SequenceGenerator(name = "enderecos.end_pais_pai_id_seq", sequenceName = "enderecos.end_pais_pai_id_seq", allocationSize = 1)
@GeneratedValue(generator = "enderecos.end_pais_pai_id_seq", strategy = GenerationType.SEQUENCE)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Column(name = "pai_descricao")
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
}
GOSTEI 0
Angelo Santos
21/03/2017
Olha o que você passou e compara com o que eu te passei. Não esta igual.
Desculpe, mas a entity está assim:
package br.com.netsoft.desif.model.endereco; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.SequenceGenerator; import javax.persistence.Table; /** * Paises */ @Entity @Table(name = "enderecos.end_pais") public class PaisEntity implements Serializable { private static final long serialVersionUID = 7784827196506672790L; private Long id; private String descricao; @Id @Column(name = "pai_id") @SequenceGenerator(name = "enderecos.end_pais_pai_id_seq", sequenceName = "enderecos.end_pais_pai_id_seq", allocationSize = 1) @GeneratedValue(generator = "enderecos.end_pais_pai_id_seq", strategy = GenerationType.SEQUENCE) public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Column(name = "pai_descricao") public String getDescricao() { return descricao; } public void setDescricao(String descricao) { this.descricao = descricao; } }
GOSTEI 0
Guilherme Lopes
21/03/2017
Sim, mas olha a que eu alterei.
Só pode ser outro erro.
Ainda acho que não está o persistindo as classes.
Olha o erro
O erro continua.
Só pode ser outro erro.
Ainda acho que não está o persistindo as classes.
Olha o erro
Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named PaisEntity
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)
at br.com.netsoft.desif.dao.endereco.PaisDao.listarPaises(PaisDao.java:28)
at br.com.netsoft.desif.controler.endereco.PaisControler.init(PaisControler.java:43)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)
at br.com.netsoft.desif.dao.endereco.PaisDao.listarPaises(PaisDao.java:28)
at br.com.netsoft.desif.controler.endereco.PaisControler.init(PaisControler.java:43)
O erro continua.
package br.com.netsoft.desif.model.endereco; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.SequenceGenerator; import javax.persistence.Table; /** * Paises */ @Entity @Table(name = "end_pais", schema = "enderecos") public class PaisEntity implements Serializable { private static final long serialVersionUID = 7784827196506672790L; private Long id; private String descricao; @Id @Column(name = "pai_id") @SequenceGenerator(name = "end_pais_pai_id_seq", sequenceName = "end_pais_pai_id_seq", allocationSize = 1) @GeneratedValue(generator = "end_pais_pai_id_seq", strategy = GenerationType.SEQUENCE) public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Column(name = "pai_descricao") public String getDescricao() { return descricao; } public void setDescricao(String descricao) { this.descricao = descricao; } }
GOSTEI 0
Cassius Magalhães
21/03/2017
Olá,
Quando eu escrevi "E então usar o nome da unidade de persistência na sua fábrica (factory) de EntityManager", trata-se: EntityManagerFactory factory = Persistence.createEntityManagerFactory("desif");
http://docs.oracle.com/javaee/7/api/javax/persistence/Persistence.html#createEntityManagerFactory-java.lang.String-
"
public static EntityManagerFactory createEntityManagerFactory(String persistenceUnitName)
Create and return an EntityManagerFactory for the named persistence unit.
Parameters:
persistenceUnitName - the name of the persistence unit
Returns:
the factory that creates EntityManagers configured according to the specified persistence unit
"
Quando eu escrevi "E então usar o nome da unidade de persistência na sua fábrica (factory) de EntityManager", trata-se: EntityManagerFactory factory = Persistence.createEntityManagerFactory("desif");
http://docs.oracle.com/javaee/7/api/javax/persistence/Persistence.html#createEntityManagerFactory-java.lang.String-
"
public static EntityManagerFactory createEntityManagerFactory(String persistenceUnitName)
Create and return an EntityManagerFactory for the named persistence unit.
Parameters:
persistenceUnitName - the name of the persistence unit
Returns:
the factory that creates EntityManagers configured according to the specified persistence unit
"
GOSTEI 0