Jpa - hibernate - postgres

Boa tarde, Galera

Sou iniciante, peguei um exercicio para fazer mas não estou conseguindo concluir.

Esse exercicio é de JPA com Hibernate e posgres.

Fiz o persistence.xml, classe editora e um gera tabela junstamente esse que está apresentando a mensagem: não foi possivel carregar e nem localizar a classe principal GeraTabelas.

Codigo Persistence.xml

<?xmlversion ="1.0" encoding ="UTF -8"?>



org.hibernate.ejb.HibernatePersistence
entities.Editora









Class

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

@Entity
public class Editora {
@Id @ GeneratedValue
private long id;
private String nome;
private String email;

//getter e setter

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;
}
public String getEmail() {
	return email;
}
public void setEmail(String email) {
	this.email = email;
}

}

GeraTabela.java, quando rodo esse código que apresenta o erro.

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

public class GeraTabelas {
public static void main(String[] args) {

	EntityManagerFactory factory = Persistence
			.createEntityManagerFactory("Criacao-pu");
	

}

}

Erro: Não foi possível localizar nem carregar a classe principal GeraTabelas

Como que você ta rodando?

Outra coisa, o nome da sua classe pública tem que ser exatamente igual ao nome do arquivo. GeraTabela ou GeraTabelas

Outra coisa, quando for postar o código aqui no guj, coloca seu código envolvido por assim ele fica formatado.

Outra coisa, bem vindo ao guj. :smiley:

Opa, obrigado pela reposta, quando rodo a classe pública GeraTabelas ele apresenta a mensagem "Erro: Não foi possível localizar nem carregar a classe principal GeraTabelas ".

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

public class GeraTabelas {
	public static void main(String[] args) {

		EntityManagerFactory factory = Persistence
				.createEntityManagerFactory("Criacao-pu");
		

	}

}


<?xmlversion ="1.0" encoding ="UTF -8"?>
<persistence version ="2.0"
xmlns =" http://java.sun.com/xml/ns/persistence" xmlns:xsi =" http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation =" http://java.sun.com/xml/ns/persistence http://java.sun.com /xml/ns/ persistence /persistence_2_0.xsd ">
<persistence-unit name = "Criacao-pu" transaction-type ="RESOURCE_LOCAL">
<provider >org.hibernate.ejb.HibernatePersistence </provider >
<class>entities.Editora</class>
<properties >
<property name =" hibernate.dialect " value ="org.hibernate.dialect.PostgreSQLDialect "/>
<property name =" hibernate.hbm2ddl.auto " value ="create"/>
<property name =" javax.persistence.jdbc.driver " value ="org.postgresql.Driver"/>
<property name =" javax.persistence.jdbc.user " value ="postgres"/>
<property name =" javax.persistence.jdbc.password " value ="masterkey "/>
<property name =" javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/livraria"/>
</properties >
</persistence-unit >
</persistence >


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


@Entity
public class Editora {
	@Id @ GeneratedValue
	private long id;
	private String nome;
	private String email;
	
	//getter e setter
	
	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;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	
}


esoares faltou mapear seu objeto relacional

no Persistence.xml
add

   <mapping class="seupacote.Editora "/>

Boa tarde, Robson

Fiz o seguinte coloquei essa classe dentro do pacote br.com.projeto01, mas o erro ainda está ocorrendo

O pesistence ficou dessa forma.

<?xmlversion ="1.0" encoding ="UTF -8"?>
<persistence version ="2.0"
xmlns =" http://java.sun.com/xml/ns/persistence" xmlns:xsi =" http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation =" http://java.sun.com/xml/ns/persistence http://java.sun.com /xml/ns/ persistence /persistence_2_0.xsd ">
<persistence-unit name = "Criacao-pu" transaction-type ="RESOURCE_LOCAL">
<provider >org.hibernate.ejb.HibernatePersistence </provider >
<mapping class="br.com.projeto01.Editora "/>  
<properties >
<property name =" hibernate.dialect " value ="org.hibernate.dialect.PostgreSQLDialect "/>
<property name =" hibernate.hbm2ddl.auto " value ="create"/>
<property name =" javax.persistence.jdbc.driver " value ="org.postgresql.Driver"/>
<property name =" javax.persistence.jdbc.user " value ="postgres"/>
<property name =" javax.persistence.jdbc.password " value ="masterkey "/>
<property name =" javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/livraria"/>
</properties >
</persistence-unit >
</persistence >

Erro: Não foi possível localizar nem carregar a classe principal br.com.Projeto01.GeraTabelas

corrija…

[code]

<?xmlversion ="1.0" encoding ="UTF -8"?>  
<persistence version ="2.0"  
xmlns =" http://java.sun.com/xml/ns/persistence" xmlns:xsi =" http://www.w3.org/2001/XMLSchema-instance"   
xsi:schemaLocation =" http://java.sun.com/xml/ns/persistence http://java.sun.com /xml/ns/ persistence /persistence_2_0.xsd ">  
<persistence-unit name = "Criacao-pu" transaction-type ="RESOURCE_LOCAL">  
<provider >org.hibernate.ejb.HibernatePersistence </provider >  

<properties >  
<property name =" hibernate.dialect " value ="org.hibernate.dialect.PostgreSQLDialect "/>  
<property name =" hibernate.hbm2ddl.auto " value ="create"/>  
<property name =" javax.persistence.jdbc.driver " value ="org.postgresql.Driver"/>  
<property name =" javax.persistence.jdbc.user " value ="postgres"/>  
<property name =" javax.persistence.jdbc.password " value ="masterkey "/>  
<property name =" javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/livraria"/>  
</properties >  

<mapping class="br.com.projeto01.Editora "/>    


</persistence-unit >  
</persistence >  [/code]

abç.

Vixi o erro ainda ocorre

posta o erro…
lá na sua Entity altera para…

@Entity
@Table(name = "editora")
public class Editora implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(columnDefinition = "serial")
    private Long id;

Robson, desculpa a demora na resposta estava meio enrolado.

ficou dessa forma

package br.com.Projeto01;
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 = "Editora")  
public class Editora implements Serializable { 
		@Id   
    @GeneratedValue(strategy = GenerationType.IDENTITY)   
    @Column(columnDefinition = "serial")  
	private long id;
	private String nome;
	private String email;
	
	//getter e setter
	
	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;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	
}

Está aparecendo ainda o erro: Não foi possível localizar nem carregar a classe principal br.com.Projeto01.GeraTabelas

[quote=esoares]Robson, desculpa a demora na resposta estava meio enrolado.

ficou dessa forma

package br.com.Projeto01;
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 = "Editora")  
public class Editora implements Serializable { 
		@Id   
    @GeneratedValue(strategy = GenerationType.IDENTITY)   
    @Column(columnDefinition = "serial")  
	private long id;
	private String nome;
	private String email;
	
	//getter e setter
	
	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;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	
}

Está aparecendo ainda o erro: Não foi possível localizar nem carregar a classe principal br.com.Projeto01.GeraTabelas[/quote]

Onde está o método construtor desta classe??? :shock:

Ficaria assim.

package br.com.Projeto01;


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 = "Editora")  
public class Editora implements Serializable { 
		@Id   
    @GeneratedValue(strategy = GenerationType.IDENTITY)   
    @Column(columnDefinition = "serial")  
	private long id;
	private String nome;
	private String email;
	

	//Método Contrutor
	
	public Editora(long id, String nome, String email) {
		super();
		this.id = id;
		this.nome = nome;
		this.email = email;
	}
	
	//getter e setter
	
	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;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	
}

o método contrutor deve ser sem parametros…

véio!!! antes entenda o conceito de Encapsulamento da POO
http://docs.oracle.com/javase/tutorial/javabeans/index.html

Eita, calma ae.

Cade o construtor default?

Se não tiver, vai dar mais erro.

O JPA precisa de um construtor sem parâmetro.

Vou perguntar a mesma coisa que perguntei no começo do post… como você está chamando a classe GeraTabelas?

Valeu, pessoal obrigado pela ajuda

esoares deu certo?

Deu certo, valeu obrigado pela ajuda.

Desculpa ai.

Deu certo, valeu obrigado.

Desculpa ai.