Boa tarde , Pessoal,
ERRO :
Exception in thread “main” java.lang.NullPointerException
at Conecta.main(Conecta.java:15)
não deu
org.hibernate.MappingNotFoundException: resource: Cliente not found
estou tentando fazer o mapeamento, pois estou começando a estudar um livro, e peguei o exemplo abaixo :
Obs. a conexão do banco esta OK e estou colocando minha classe Cliente.java no mesmo local que esta o hibernate.cfg.xml
<mapping resource="Cliente" />
CONNECT, é aonde vou criar a tabelas do meu sistema.
import org.hibernate.Session;
import com.kurtph.sistema.vendas.HibernateUtil;
public class Conecta {
public static void main(String[] args) {
Session sessao = null;
try {
sessao = HibernateUtil.getSession().openSession();
System.out.println("Conectado");
}finally{
sessao.close();
System.out.println("fechou conexao");
}
}
}
hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="connection.url">
jdbc:mysql://localhost/sistemavendas
</property>
<property name="connection.username">root</property>
<property name="connection.password">admin</property>
<property name="dialect">
org.hibernate.dialect.MySQL5Dialect
</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping resource="Cliente" />
</session-factory>
</hibernate-configuration>
Cliente.java
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="cliente")
public class Cliente {
@Id
@GeneratedValue
private Integer id;
private String cpf;
private String email;
private String endereco;
@Column(name="data_cadastro")
private Date datacadastro;
private String nome ;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public Date getDatacadastro() {
return datacadastro;
}
public void setDatacadastro(Date datacadastro) {
this.datacadastro = datacadastro;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Float getRenda() {
return renda;
}
public void setRenda(Float renda) {
this.renda = renda;
}
private Float renda;
}
Fala Garoto!!
me diz uma coisa, essa classe cliente esta dentro de algum pacote?
Creio eu que você precise mapear um XML com dados da Classe cliente - “Cliente.hbm.xml”, por exemplo.
No caso de estar usando uma abordagem annotattion-driven isso nao se torna necessário, mas você deve configurar de forma correta.
De qualquer forma, posta a sua Classe que tem o método main.
Entao minha classe, esta no mesmo lugar do hibernate.cfg.xml,
A classe main, esta acima.
Obrigado
Evandro
Pelo erro seu mapemamento <mapping resource="Cliente" />
esta errado, se estiver dentro de algum pacote vc deve adcionar.
Exemplo:
<mapping resource="nomedopacote.Cliente" />
Desculpe minha falta de atenção, posta a classe onde você realiza a configuração.
Dei uma pesquisada aqui e também acho que pode ser o nome do pacote.
Qual tutorial você está seguindo?
Você precisa, obrigatoriamente, criar um arquivo chamado Cliente.hbm.xml e, é este arquivo que deve ser referenciado na tag
[color=red]Desde que:[/color]
- O arquivo de configuração Cliente.hbm.xml esteja apenas na pasta src (package padrão)
Como eu não gosto de XML, eu oriento trocar isso por Annotation, logo, esta sua tag seria substituída por
[color=red]Desde que:[/color]
- A classe Cliente esteja apenas no src (package padrão)
Pessoal,
Minha estrutura de arquivo igual na imagem,
Por xml, consigo fazer , mas gostaria de fazer da forma Annotation, alguem pode me orientar ??por favor
O nome da classe a ser mapeada precisa conter o pacote, ou seja,
você deve usar um Full Class-name a NÃO ser que esta classe esteja
no pacote default, que não é o seu caso.
Pessoal,
Coloquei assim : e continua o mesmo erro
<mapping resource="com.kurtph.sistema.cliente.Cliente" />
Isso acontece por que você está usando o mapping resource para mapear uma classe. Troque por mapping class.
Ao invés de <mapping resource="com.kurtph.sistema.cliente.Cliente" />
use:
<mapping class="com.kurtph.sistema.cliente.Cliente" />
.
Se você especifica com resource ele procura um XML, e você quer uma classe.
Galera,
o erro mudou …
NFO: Configuration resource: hibernate.cfg.xml
Exception in thread “main” java.lang.NullPointerException
at Conecta.main(Conecta.java:15)
não deu
org.hibernate.MappingException: An AnnotationConfiguration instance is required to use
[quote=evandro_araujo]Galera,
o erro mudou …
NFO: Configuration resource: hibernate.cfg.xml
Exception in thread “main” java.lang.NullPointerException
at Conecta.main(Conecta.java:15)
não deu
org.hibernate.MappingException: An AnnotationConfiguration instance is required to use
[/quote]
Isso quer dizer que agora a configuração está ok, mas a linha 15 da classe Conecta possui a invocação de método ou atributo em um objeto nulo.
Entao,
Minha linha é sessao.close();
Obs. Mas nao criou a tabela cliente no meu banco de dados, significa que nao deu certo ?
public class Conecta {
public static void main(String[] args) {
Session sessao = null;
try {
sessao = HibernateUtil.getSession().openSession();
System.out.println("Conectado");
}finally{
sessao.close();
System.out.println("fechou conexao");
}
}
}
Posta a classe HibernateUtil.
Parece que há um problema na instanciação do objeto de configuração.
Se tivesse um catch, teríamos como saber qual o verdadeiro erro, já que NPE é apenas a consequência de um erro “omitido”.
Pessoal,
Coloquei o catch : e o erro que esta dando :
org.hibernate.MappingException: An AnnotationConfiguration instance is required to use
Exception in thread “main” java.lang.ExceptionInInitializerError
at com.kurtph.sistema.vendas.HibernateUtil.buildSessionFactory(HibernateUtil.java:17)
at com.kurtph.sistema.vendas.HibernateUtil.(HibernateUtil.java:7)
at Conecta.main(Conecta.java:12)
public class Conecta {
public static void main(String[] args) {
Session sessao = null;
try {
sessao = HibernateUtil.getSession().openSession();
System.out.println("Conectado");
} catch (Exception e) {
System.out.println(e);
}
}
}
package com.kurtph.sistema.vendas;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static final SessionFactory session = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
try {
Configuration cfg = new Configuration();
cfg.configure("hibernate.cfg.xml");
return cfg.buildSessionFactory();
} catch (Throwable e) {
System.out.println("não deu\n"+e);
throw new ExceptionInInitializerError();
}
}
public static SessionFactory getSession() {
return session;
}
}
Se eu me lembro, é assim
AnnotationConfiguration cfg = new AnnotationConfiguration().configure("seu.xml.aqui.hbm.xml");
Mas, não tenho certeza.