Erro Java + Hibernate + JSF + Maven

0 respostas
W

Pessoal me ajuda, to apanhando muito com uma coisa, comecei com o hibernate a pouco tempo, e acho que não estou conseguindo configurar corretamente.

Tenho um arquivo que tem um método main, que funciona normalmente, faz persistencia se eu precisar ele retorna os dados, tudo certinho, o problema e quando tento fazer isso em uma página web usando JSF. É retornado o seguinte erro:

WARNING [javax.enterprise.resource.webcontainer.jsf.lifecycle] (http-/127.0.0.1:8080-2) #{testePersistenciaBean.inserir()}: java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;: javax.faces.FacesException: #{testePersistenciaBean.inserir()}: java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;

Códigos seguem abaixo:

Classe Model

package puc.si.psi.ti.testes;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 *
 * @author Wilton Garcia
 */
@Entity
@Table(name = "tb_teste_persistencia")
public class TestesPersistencia {
    @Id
    @GeneratedValue
    private Integer idTeste;
    private Integer randomValueTeste;

    public Integer getIdTeste() {
        return idTeste;
    }

    public void setIdTeste(Integer idTeste) {
        this.idTeste = idTeste;
    }

 
    public Integer getRandomValueTeste() {
        return randomValueTeste;
    }

    public void setRandomValueTeste(Integer randomValueTeste) {
        this.randomValueTeste = randomValueTeste;
    }
   
}

Arquivo com o método main, que funciona corretamente quando eu executo ele:

package puc.si.psi.ti.testes;

import java.util.Random;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

/**
 *
 * @author Wilton Garcia
 */
public class ExecutaTestePersistencia {
public static void main(String[] args){
    Random gerador = new Random();
    
    TestesPersistencia tp = new TestesPersistencia();
    tp.setRandomValueTeste(gerador.nextInt());
    //Instancia a fabrica de conexões
    SessionFactory factory = new Configuration().configure().buildSessionFactory();
    //Abre a conexão com o banco de dados
    Session session = factory.openSession();
    //Começa o processo de transação
    session.beginTransaction();
    //Salva o estado do objeto atual
    session.save(tp);
    //Faz o commit dos dados para o banco
    session.getTransaction().commit();
    //Fecha a conexão com o banco de dados
    session.close();
}
}

Bean, esse arquivo esta retornando o erro.

package puc.si.psi.ti.testes;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import org.hibernate.Session;
import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;

/**
 *
 * @author Wilton Garcia
 */
@ManagedBean
@RequestScoped
public class TestePersistenciaBean {

    private TestesPersistencia tp = new TestesPersistencia();

    public TestesPersistencia getTp() {
        return tp;
    }

    public void setTp(TestesPersistencia tp) {
        this.tp = tp;
    }

    public void inserir() {

        //Abre a conexão com o banco de dados
     SessionFactory factory = new Configuration().configure().buildSessionFactory();
        //Abre a conexão com o banco de dados
        Session session = factory.openSession();
        //Começa o processo de transação
        session.beginTransaction();
        //Salva o estado do objeto atual
        session.save(tp);
        //Faz o commit dos dados para o banco
        session.getTransaction().commit();
        //Fecha a conexão com o banco de dados
        session.close();
    }

Página JSF que chama o arquivo:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui">

    <f:view contentType="text/html">
        <h:head>
            <f:facet name="first">
                <meta content='text/html; charset=UTF-8' http-equiv="Content-Type"/>
                <title>Inserir</title>
            </f:facet>
        </h:head>

        <h:body>

            <h:form>
                <p:panelGrid columns="5">
                    <p:outputLabel value="Valor"/>
                    <p:inputText value="#{testePersistenciaBean.tp.randomValueTeste}"/>
                    <p:commandButton value="Inserir"
                                     action="#{testePersistenciaBean.inserir()}"/>
                </p:panelGrid>
            </h:form>
        </h:body>

    </f:view>
</html>

Arquivo hibernate.cfg.xml (Sim, deixei create para ir fazendo testes)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <!-- Connection settings -->
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost/hibernate_tutorial_bd</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password"/>
    <!-- SQL dialect -->
    <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
    <!-- Print executed SQL to stdout -->
    <property name="show_sql">true</property>
    <!-- Drop and re-create all database on startup -->
    <property name="hibernate.hbm2ddl.auto">create</property>
    <!-- Annotated entity classes -->
    
    <mapping class="puc.si.psi.ti.testes.TestesPersistencia"/>
    
  </session-factory>
</hibernate-configuration>

Arquivo POM

<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>pucpsi</groupId>
    <artifactId>pucpsi</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <name>pucpsi</name>

    <properties>
        <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.primefaces</groupId>
            <artifactId>primefaces</artifactId>
            <version>6.1</version>
        </dependency>
        <dependency>
            <groupId>com.sun.faces</groupId>
            <artifactId>jsf-api</artifactId>
            <version>2.2.15</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.jboss.logging/jboss-logging -->
        <dependency>
            <groupId>org.jboss.logging</groupId>
            <artifactId>jboss-logging</artifactId>
            <version>3.3.1.Final</version>
        </dependency>

        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>8.0</version>
            <scope>provided</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.2.11.Final</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                    <compilerArguments>
                        <endorseddirs>${endorsed.dir}</endorseddirs>
                    </compilerArguments>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.1.1</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.1</version>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>copy</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${endorsed.dir}</outputDirectory>
                            <silent>true</silent>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>javax</groupId>
                                    <artifactId>javaee-endorsed-api</artifactId>
                                    <version>6.0</version>
                                    <type>jar</type>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.jboss.as.plugins</groupId>
                <artifactId>jboss-as-maven-plugin</artifactId>
                <version>7.9.Final</version>
            </plugin>
        </plugins>
    </build>
    <repositories>
        <repository>
            <url>http://repository.primefaces.org/</url>
            <id>PrimeFaces-maven-lib</id>
            <layout>default</layout>
            <name>Repository for library PrimeFaces-maven-lib</name>
        </repository>
    </repositories>
</project>

Já troquei a versão do hibernate para 4 e continua retornando o mesmo erro, troque para 3 e mudou o erro, mas queria uma coisa que funcionasse, pesquisando achei muita gente falando de conflito de jars, porém não achei nada conflitante, mas segue aqui a árvore de dependências.

[INFO] Scanning for projects...
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] Building pucpsi 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ pucpsi ---
[INFO] pucpsi:pucpsi:war:1.0-SNAPSHOT
[INFO] +- org.primefaces:primefaces:jar:6.1:compile
[INFO] +- com.sun.faces:jsf-api:jar:2.2.15:compile
[INFO] +- org.jboss.logging:jboss-logging:jar:3.3.1.Final:compile
[INFO] +- javax:javaee-web-api:jar:8.0:provided
[INFO] +- org.hibernate:hibernate-core:jar:5.2.11.Final:compile
[INFO] |  +- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final:compile
[INFO] |  +- org.javassist:javassist:jar:3.20.0-GA:compile
[INFO] |  +- antlr:antlr:jar:2.7.7:compile
[INFO] |  +- org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:jar:1.0.1.Final:compile
[INFO] |  +- org.jboss:jandex:jar:2.0.3.Final:compile
[INFO] |  +- com.fasterxml:classmate:jar:1.3.0:compile
[INFO] |  +- dom4j:dom4j:jar:1.6.1:compile
[INFO] |  |  \- xml-apis:xml-apis:jar:1.0.b2:compile
[INFO] |  \- org.hibernate.common:hibernate-commons-annotations:jar:5.0.1.Final:compile
[INFO] \- mysql:mysql-connector-java:jar:5.1.38:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.799 s
[INFO] Finished at: 2017-10-27T10:08:06-02:00
[INFO] Final Memory: 9M/153M
[INFO] ------------------------------------------------------------------------

Estou usando o NetBeans 8.2, Jboss EAP 6.3, JDK 8, quem souber do que eu estou fazendo errado, ou se alguém tiver um projeto ai de exemplo ia me ajudas bastante.

Criado 27 de outubro de 2017
Respostas 0
Participantes 1