Ola, estou com uma aplicação que quando tenho apenas um crud funcionando tudo vai bem mas se acrescento um outro crud erro.
Segue a baixo o link do github e parte do código.
SGNCT001
@Table (name=“EMPRESA”)
@Entity
public class Empresa {
@Id
@Column (length=20)
private String cnpj;
@Column (length=100)
private String razaoSocial;//Razão Social da empresa
@Column (length=100)
private String nFantasia;//Nome fantasia da Empresa
public String getCnpj() {
return cnpj;
}
public void setCnpj(String cnpj) {
this.cnpj = cnpj;
}
public String getnFantasia() {
return nFantasia;
}
public void setnFantasia(String nFantasia) {
this.nFantasia = nFantasia;
}
public String getRazaoSocial() {
return razaoSocial;
}
public void setRazaoSocial(String razaoSocial) {
this.razaoSocial = razaoSocial;
}
}
public class GenericDAO<Entidade, ID extends Serializable> {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("meuPU");
EntityManager em = emf.createEntityManager();
private Class<Entidade> entidadeClass;
public GenericDAO(Class<Entidade> entidadeClass) {
this.entidadeClass = entidadeClass;
}
public EntityManager getEm() {
return em = emf.createEntityManager();
}
@PersistenceContext
public void setEm(EntityManager em) {
this.em = em;
}
public Class<Entidade> getEntidadeClass() {
return entidadeClass;
}
public void salva(Entidade entidade) {
try {
em.getTransaction().begin();
em.persist(entidade);
em.getTransaction().commit();
} catch (RuntimeException e) {
em.getTransaction().rollback();
} finally {
em.close();
}
}// fim do método salva
public void atualiza(Entidade entidade) {
try {
em.getTransaction().begin();
em.merge(entidade);
em.getTransaction().commit();
} catch (RuntimeException e) {
em.getTransaction().rollback();
} finally {
em.close();
}
}// fim do método atualiza
@SuppressWarnings("unchecked")
public List<Entidade> listaTodos() {
return getEm().createQuery("select e from " + getEntidadeClass().getSimpleName() + " e").getResultList();
}// fim do método listaTodos
public void deleta(Entidade entidade) {
getEm().getTransaction().begin();
getEm().remove(entidade);
getEm().getTransaction().commit();
em.close();
}// fim do método deleta
}
public class EmpresaDAO extends GenericDAO<Empresa, Serializable> {
public EmpresaDAO(Class<Empresa> entidadeClass) {
super(entidadeClass);
// TODO Auto-generated constructor stub
}
}
@ManagedBean (name = “empresaBean”)
public class EmpresaBean {
private List<Empresa> empresas;
private Empresa empresa;
private EmpresaDAO empresaDao;
public EmpresaBean() {
empresa = new Empresa();
empresas = null;
empresaDao = new EmpresaDAO(Empresa.class);
}
//gettes e seters
public Empresa getEmpresa() {
return empresa;
}
public void setEmpresa(Empresa empresa) {
this.empresa = empresa;
}
public EmpresaDAO getDao() {
return empresaDao;
}
public void setDao(EmpresaDAO daoEmpresa) {
this.empresaDao = daoEmpresa;
}
public List<Empresa> getEmpresas() {
empresas = empresaDao.listaTodos();
return empresas;
}
public void setEmpresas(List<Empresa> empresas) {
this.empresas = empresas;
}
//métodos crud
public void salva() {
this.empresaDao.salva(empresa);
empresa = new Empresa();
}
public void exclui() {
empresaDao.deleta(empresa);
}
}
Pesquisa Empresa
<ui:composition template="/template/LayoutPadrao.xhtml"
xmlns=“http://www.w3.org/1999/xhtml ”
xmlns:h=“http://java.sun.com/jsf/html ”
xmlns:ui=“http://java.sun.com/jsf/facelets ”
xmlns:f=“http://java.sun.com/jsf/core ”
xmlns:p=“http://primefaces.org/ui ”>
<ui:define name="conteudo">
<p:panel style="margin-left:50px; margin-right:50px; text-align:center;"
header="Empresa" >
<p:button outcome="CadastraEmpresa" title="Novo" value="Novo" />
<p:dataTable var="empresas" value="#{empresaBean.empresas}">
<p:column headerText="CNPJ">
<h:outputText value="#{empresas.cnpj}" />
</p:column>
<p:column headerText="Razão Social">
<h:outputText value="#{empresas.razaoSocial}" />
</p:column>
<p:column headerText="Nome Fanatasia">
<h:outputText value="#{empresas.nFantasia}" />
</p:column>
<p:column headerText="Opções">
<p:button value="Alterar" outcome="CadastraEmpresa" title="Alterar"/>
<p:button value="Deletar" outcome="CadastraEmpresa" title="Deletar"/>
</p:column>
</p:dataTable>
</p:panel>
</ui:define>
</ui:composition>
Cadastra Empresa
<ui:composition template="/template/LayoutPadrao.xhtml"
xmlns=“http://www.w3.org/1999/xhtml ”
xmlns:h=“http://java.sun.com/jsf/html ”
xmlns:ui=“http://java.sun.com/jsf/facelets ”
xmlns:f=“http://java.sun.com/jsf/core ”
xmlns:p=“http://primefaces.org/ui ”>
<ui:define name="conteudo">
<br />
<h:form id="frmCadastraEmpresa">
<p:panel header="Cadastra Empresa" style="width:1024px; height:300px; margin-left:120px; margin-rigth:50px; margin-top:10px;">
<p:panelGrid columns="2" style="margin-top:20px;">
<p:outputLabel value="CNPJ" for="cnpj" />
<p:inputMask mask="99.999.999/999-99" id="cnpj" size="18" value="#{empresaBean.empresa.cnpj}" />
<p:outputLabel value="Razão Social" for="rSocial" />
<p:inputText id="rSocial" size="100" value="#{empresaBean.empresa.razaoSocial}" />
<p:outputLabel value="Nome Fantasia/ Redusido" for="fantasia" />
<p:inputText id="fantasia" size="80" value="#{empresaBean.empresa.nFantasia}" />
</p:panelGrid>
<p:commandButton value="Enviar" action="#{empresaBean.salva}" style="margin-top:5px;"/>
</p:panel>
</h:form>
</ui:define>
</ui:composition>
Posta o texto do stacktrace completo, deve tem mais detalhes pra baixo do pq n pode ser instanciado.
Mike
Junho 1, 2018, 1:34pm
#4
Jhonatan_Lira:
Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named meuPU
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:61)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
at br.com.lira.dao.GenericDAO.(GenericDAO.java:13)
at br.com.lira.dao.EmpresaDAO.(EmpresaDAO.java:10)
at br.com.lira.bean.EmpresaBean.(EmpresaBean.java:20)
Verifica se o seu persistence-unit chama meuPU ou então, posta o código do persistence.xml
[quote]
<?xml version="1.0" encoding="UTF-8"?>
<!-- Implementação do JPA -->
<provider>org.hibernate.ejb.HibernatePersistenceProvider</provider>
<!-- Lista de entidades -->
<class>br.com.lira.modelo.Empresa</class>
<class>br.com.lira.modelo.Setor</class>
<class>br.com.lira.modelo.Onibus</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<!-- Propriedades JDBC -->
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/tcc?autoReconnect=true"/>
<property name="javax.persistence.jdbc.user" value="lira"/>
<property name="javax.persistence.jdbc.password" value="lira"/>
<!-- Configurações específicas do Hibernate -->
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
<property name="hibernate.hbm2ddl.auto" value="validate"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.connection.autoReconnect" value = "true" />
<property name="hibernate.connection.autoReconnectForPools" value = "true" />
<property name="hibernate.connection.is-connection-validation-required" value = "true" />
<property name="hibernate.archive.autodetection" value="class, hbm"/>
</properties>
//JPAUtil
public class JPAUtil {
private static EntityManagerFactory emf ;
static{
if(emf == null){
emf = Persistence.createEntityManagerFactory("meuPU");
}
}
public static EntityManager getEntityManager(){
return emf.createEntityManager();
}
}
O nome esta como :
persistence-unit name=“meuPU” transaction-type=“RESOURCE_LOCAL”
Mike
Junho 1, 2018, 2:30pm
#6
Jhonatan_Lira:
[quote]
<?xml version="1.0" encoding="UTF-8"?>
<!-- Implementação do JPA -->
<provider>org.hibernate.ejb.HibernatePersistenceProvider</provider>
<!-- Lista de entidades -->
<class>br.com.lira.modelo.Empresa</class>
<class>br.com.lira.modelo.Setor</class>
<class>br.com.lira.modelo.Onibus</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<!-- Propriedades JDBC -->
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/tcc?autoReconnect=true"/>
<property name="javax.persistence.jdbc.user" value="lira"/>
<property name="javax.persistence.jdbc.password" value="lira"/>
<!-- Configurações específicas do Hibernate -->
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
<property name="hibernate.hbm2ddl.auto" value="validate"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.connection.autoReconnect" value = "true" />
<property name="hibernate.connection.autoReconnectForPools" value = "true" />
<property name="hibernate.connection.is-connection-validation-required" value = "true" />
<property name="hibernate.archive.autodetection" value="class, hbm"/>
</properties>
//JPAUtil
public class JPAUtil {
private static EntityManagerFactory emf ;
static{
if(emf == null){
emf = Persistence.createEntityManagerFactory("meuPU");
}
}
public static EntityManager getEntityManager(){
return emf.createEntityManager();
}
}
Primeira vez que você mexe com JPA?
Aqui tem um tutorial: https://www.caelum.com.br/apostila-java-web/uma-introducao-pratica-ao-jpa-com-hibernate/
Mike
Junho 1, 2018, 2:36pm
#7
Pq não esta aparecendo no persistence.xml?
Não sei por mais que eu cole parece apenas do provider para baixo.