Estou aprendendo sobre Hibernate e usando um Banco de Dados embarcado (H2 database), mas estou esbarrando em um problema que tá me tirando o sono. Eu fiz:
- Conexão com o Banco;
- Criei o arquivo Hibernate com a classe entity mapeada;
Mas quando testo o banco JUnit dá o seguinte erro:
org.hibernate.MappingException: Unknown entity: br.com.meioAmb.domain.Cliente
se alguém puder me explicar porque essa bendita dá essa “entidade desconhecida”, ajudaria demais, pois já tentei tudo que conheço e o que pesquisei em fóruns e nada.
arquivo: hibernate.cfg.xml`
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">org.h2.Driver</property>
<property name="hibernate.connection.url">jdbc:h2:C:\Users\Dell\workspace\meioAmb\src\dbMA</property>
<property name="hibernate.connection.username">sa</property>
<property name="javax.persistence.jdbc.password" ></property>
<property name="dialect">org.hibernate.dialect.H2Dialect</property>
<property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>
<property name="hibernate.hbm2ddl.auto">create-drop</property>
<mapping class="Cliente" package="br.com.meioAmb.domain"/>
</session-factory>
</hibernate-configuration>
esse é a classe Cliente.java
package br.com.meioAmb.domain;
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.Table;
@Entity
@Table(name="cliente")
public class Cliente implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id")
private Long id;
@Column(name="nome")
private String nome;
/**
*
*/
public Cliente() {
super();
// TODO Auto-generated constructor stub
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
Essa é a classe GenericDAO
package br.com.meioAmb.domain.dao;
import org.hibernate.Session;
import org.hibernate.Transaction;
import br.com.meioAmb.util.HibernateUtil;
public class GenericDAO<T> {
public void salvar(T entidade){
Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
Transaction transacao = null;
try {
transacao = sessao.beginTransaction();
sessao.save(entidade);
transacao.commit();
} catch (RuntimeException erro) {
if (transacao!=null) {
transacao.rollback();
}
throw erro;
}finally{
sessao.close();
}
}
}
essa é ClienteDAOTest
import org.junit.Test;
import br.com.meioAmb.domain.Cliente;
public class ClienteDAOTest {
@Test
public void salvar(){
Cliente c1 = new Cliente();
c1.setNome("Jose Pedro");
ClienteDAO clienteDAO = new ClienteDAO();
clienteDAO.salvar(c1);
}
}
E por último meu pom.xml (maven)
<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>br.com.meioAmb</groupId>
<artifactId>meioAmb</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>meioAmb</name>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.10.Final</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.2.10.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.4.1.Final</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.196</version>
</dependency>
</dependencies>
</project>