Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

[Bug] Está dando erro na conexão com o JPA, não sei mais o que fazer vou deixar o codigo aqui a baixo, Professor de uma ajuda aqui que to estudando por seu curso pra terminar o projeto da faculdade.

Vou deixar o erro que está dando no momento aqui a baixo:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Aqui vou deixar o codigo de persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.2"
             xmlns="http://xmlns.jcp.org/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd">

    <persistence-unit name="dizimo_online" transaction-type="RESOURCE_LOCAL">
        <properties>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/dizimo_online?createDatabaseIfNotExist=true" />
            <property name="javax.persistence.jdbc.user" value="root"/>
            <property name="javax.persistence.jdbc.password" value="root"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.format_sql" value="true"/>
            <property name="hibernate.hbm2ddl.auto" value="update"/>
        </properties>
    </persistence-unit>
</persistence>
6 respostas

Agora o POM.xml

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>br.com.unifacol.dizimo</groupId>
    <artifactId>Dizimo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>Dizimo</name>
    <packaging>war</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.target>11</maven.compiler.target>
        <maven.compiler.source>11</maven.compiler.source>
        <junit.version>5.9.1</junit.version>
    </properties>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/com.zaxxer/HikariCP -->
        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
            <version>5.0.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.32</version>
        </dependency>

        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet</artifactId>
            <version>3.0.4</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-json-jackson</artifactId>
            <version>3.0.4</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.inject</groupId>
            <artifactId>jersey-cdi2-se</artifactId>
            <version>3.0.4</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-client</artifactId>
            <version>3.0.4</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate.orm</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>6.0.2.Final</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-runtime</artifactId>
            <version>3.0.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator -->
        <dependency>
            <groupId>org.hibernate.validator</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>8.0.0.Final</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.tyrus</groupId>
            <artifactId>tyrus-container-grizzly-server</artifactId>
            <version>2.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.tyrus.bundles</groupId>
            <artifactId>tyrus-standalone-client</artifactId>
            <version>2.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.weld.se</groupId>
            <artifactId>weld-se-core</artifactId>
            <version>4.0.3.Final</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.4.27.Final</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.3.2</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>16</source>
                    <target>16</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

E agora vou deixar o codigo do pojeto que estou fazendo:

JPAUtil

package br.com.unifacol.dizimo.model.util;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class JPAUtil {

    private static final EntityManagerFactory emf;

    static {
        try {
            emf = Persistence.createEntityManagerFactory("dizimo_online");
        } catch (Throwable ex) {
            System.err.println("Erro ao inicializar EntityManagerFactory: " + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static EntityManager getEntityManager() {
        return emf.createEntityManager();
    }

    public static void closeEntityManagerFactory() {
        emf.close();
    }

}

O restante do codigo a baixo:

package br.com.unifacol.dizimo.model.entidades;

import br.com.unifacol.dizimo.model.enums.Sexo;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import java.time.LocalDate;

@Entity
@Table(name = "membros")
public class Membro{

    private String nome;
    @Id
    private String cpf;
    private Integer idade;
    private LocalDate dataDeNascimento;
    private Sexo sexo;
    private Integer senha;
    @OneToOne
    private Endereco endereco;

    public Membro(String nome, String cpf, Integer idade, LocalDate dataDeNascimento, Sexo sexo, Integer senha, Endereco endereco) {
        this.nome = nome;
        this.cpf = cpf;
        this.idade = idade;
        this.dataDeNascimento = dataDeNascimento;
        this.sexo = sexo;
        this.senha = senha;
        this.endereco = endereco;
    }

    public Membro() {
    }

    public Integer getSenha() {
        return senha;
    }

    public void setSenha(Integer senha) {
        this.senha = senha;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public Integer getIdade() {
        return idade;
    }

    public void setIdade(Integer idade) {
        this.idade = idade;
    }

    public LocalDate getDataDeNascimento() {
        return dataDeNascimento;
    }

    public void setDataDeNascimento(LocalDate dataDeNascimento) {
        this.dataDeNascimento = dataDeNascimento;
    }

    public Sexo getSexo() {
        return sexo;
    }

    public void setSexo(Sexo sexo) {
        this.sexo = sexo;
    }

    public Endereco getEndereco() {
        return endereco;
    }

    public void setEndereco(Endereco endereco) {
        this.endereco = endereco;
    }
}
package br.com.unifacol.dizimo.model.entidades;

import br.com.unifacol.dizimo.model.enums.Estado;
import jakarta.persistence.*;

@Entity
@Table(name = "enderecos")
public class Endereco {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String rua;
    private Integer numero ;
    private String bairro;
    private String cidade;
    private Estado estado;

    public Endereco(String rua, Integer numero, String bairro, String cidade, Estado estado) {
        this.rua = rua;
        this.numero = numero;
        this.bairro = bairro;
        this.cidade = cidade;
        this.estado = estado;
    }

    public Endereco() {
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getRua() {
        return rua;
    }

    public void setRua(String rua) {
        this.rua = rua;
    }

    public Integer getNumero() {
        return numero;
    }

    public void setNumero(Integer numero) {
        this.numero = numero;
    }

    public String getBairro() {
        return bairro;
    }

    public void setBairro(String bairro) {
        this.bairro = bairro;
    }

    public String getCidade() {
        return cidade;
    }

    public void setCidade(String cidade) {
        this.cidade = cidade;
    }

    public Estado getEstado() {
        return estado;
    }

    public void setEstado(Estado estado) {
        this.estado = estado;
    }

    @Override
    public String toString() {
        return "\nRua: " + this.rua + "\nNº: " + this.numero + "\nBairro: " + this.bairro + "\nCidade: " + this.cidade +
                "\nEstado: " + this.estado.getNomeCompleto();
    }
}

Repositorio:

package br.com.unifacol.dizimo.model.repository;

import br.com.unifacol.dizimo.model.entidades.Membro;
import br.com.unifacol.dizimo.model.interfaceRepository.IRepositoryMembro;

import javax.persistence.EntityManager;
import java.sql.SQLException;
import java.util.List;

public class MembroRepository implements IRepositoryMembro {

    private EntityManager manager;

    public MembroRepository(EntityManager manager) {
        this.manager = manager;
    }

    @Override
    public void cadastrarMembro(Membro membro) throws SQLException {

        try{
            manager.getTransaction().begin();
            manager.persist(membro);
            manager.getTransaction().commit();
        }catch (Exception e){
            if (manager.getTransaction().isActive()){
                manager.getTransaction().rollback();
                System.out.println(e.getStackTrace());
            }
            throw new RuntimeException("Erro ao cadastrar: " + e);
        }
    }

    @Override
    public void alterarMembro(Membro membro) throws SQLException {
        this.manager.merge(membro);
    }

    @Override
    public void excluirMembro(String cpf) throws SQLException {

    }

    @Override
    public List<Membro> listarMembros() throws SQLException {
        return null;
    }

    @Override
    public List<Membro> listarPorID(Long id) throws SQLException {
        return null;
    }

    @Override
    public List<Membro> listarPorCPF(String cpf) throws SQLException {
        return null;
    }

Serviço:

package br.com.unifacol.dizimo.model.service;

import br.com.unifacol.dizimo.model.entidades.Endereco;
import br.com.unifacol.dizimo.model.entidades.Membro;
import br.com.unifacol.dizimo.model.enums.Estado;
import br.com.unifacol.dizimo.model.enums.Sexo;
import br.com.unifacol.dizimo.model.interfaceService.IMembroService;
import br.com.unifacol.dizimo.model.repository.MembroRepository;
import br.com.unifacol.dizimo.model.validacao.ValidadorCPF;

import javax.swing.*;
import java.sql.SQLException;
import java.time.LocalDate;
import java.time.Period;
import java.time.format.DateTimeFormatter;

public class MembroService implements IMembroService {

    private MembroRepository membroRepository;
    private ValidadorCPF validadorCPF = new ValidadorCPF();


    public MembroService(MembroRepository membroRepository) {
        this.membroRepository = membroRepository;
    }

    @Override
    public void cadastrar() throws SQLException {
        String rua = JOptionPane.showInputDialog("Rua: ");
        Integer numero = Integer.valueOf(JOptionPane.showInputDialog("Numero: "));
        String bairro = JOptionPane.showInputDialog("Bairro: ");
        String cidade = JOptionPane.showInputDialog("Cidade: ");
        Estado estado = Estado.valueOf(JOptionPane.showInputDialog("Estado: "));

        Endereco endereco = new Endereco(rua,numero,bairro,cidade,estado);

        String nome = JOptionPane.showInputDialog("Nome: ");
        String cpf = JOptionPane.showInputDialog("CPF: ");
        Sexo sexo = Sexo.valueOf(JOptionPane.showInputDialog("Sexo: "));
        Integer senha = Integer.valueOf(JOptionPane.showInputDialog("Senha: "));

        do {

            if (!validadorCPF.verificarCpf(cpf)) {
                JOptionPane.showMessageDialog(null, "CPF inválido. Digite novamente.");
                cpf = JOptionPane.showInputDialog("CPF: ");
            }
        } while (!validadorCPF.verificarCpf(cpf));

        cpf = cpf;

        String dataDeNacimento = JOptionPane.showInputDialog("Data de nascimento (DD/MM/YYYY): ");
        LocalDate data = LocalDate.parse(dataDeNacimento, DateTimeFormatter.ofPattern("dd/MM/yyyy"));
        LocalDate dataAtual = LocalDate.now();
        Integer idade = Period.between(data,dataAtual).getYears();

        Membro membro = new Membro(nome,cpf,idade,data,sexo,senha,endereco);
        membroRepository.cadastrarMembro(membro);
    }

    @Override
    public void alterar(Membro membro) throws SQLException {
        membroRepository.alterarMembro(membro);
    }

    @Override
    public void excluir(String cpf) throws SQLException {
        membroRepository.excluirMembro(cpf);
    }

    @Override
    public void listarTodos() throws SQLException {
        membroRepository.listarMembros();
    }

    @Override
    public void listarPorID(String cpf) throws SQLException {
        membroRepository.excluirMembro(cpf);
    }
}

Literalmente não estou sabendo o que fazer para resolver esse problema, se alguem puder me ajudar vou agradecer muito. Vou deixar o link do gitHub se for mas facil pra alguem olhar: https://github.com/BrunoAlexys/Dizimo_Online1.git

solução!

Esse erro ja foi solucionado