[RESOLVIDO] Ajuda com jpa

Ola queria saber como gerar o banco de dados atravez das minhas classes,
ja tenho minhas entidades mapeadas, e configurei o persistence.xml assim:


<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.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_1_0.xsd">
    <persistence-unit name="conexao" transaction-type="RESOURCE_LOCAL">  
    	<provider>org.hibernate.ejb.HibernatePersistence</provider>  
        <properties>
       		<property name="hibernate.archive.autodetection" value="class" />
       		 
            <!-- Conexão com o banco de dados -->
			<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
			<property name="hibernate.connection.driver_class" value="org.postgresql.Driver" />
			<property name="hibernate.connection.url" value="jdbc:postgresql://localhost/Sistema_Estoque" />
			<property name="hibernate.connection.user" value="root" />
			<property name="hibernate.connection.password" value="123" />
<!--             <property name="hibernate.hbm2ddl.auto" value="create" /> -->
            <property name="hibernate.hbm2ddl.auto" value="update"/>
 
            <!--Configuracoes de Debug-->
			<property name="hibernate.show_sql" value="true" />
			<property name="hibernate.format_sql" value="true" />
			<property name="use_sql_comments" value="true" />
			
		</properties>
    </persistence-unit>
</persistence>

Como gero o banco de dados?

Use

<property name="hibernate.hbm2ddl.auto" value="create-drop"/>

Execute a aplicação e depois volte para update, senão toda vez que iniciar a aplicação ele apaga as tabelas e cria novamente.

Obs.: para que as tabelas sejam criadas é preciso executar alguma operação de banco de dados. Só criar o entity manager factory, se estiver usando, já serve. Se tiver dúvidas, consulte aqui:

Como faço?
fiz aqui e da exception com o nome,
Exception in thread “main” javax.persistence.PersistenceException: No Persistence provider for EntityManager named conexao

meu projeto esta no maven, onde coloco o persistence.xml? precisa que criar pasta META-INF
?
e onde?

Não tenho usado o maven, mas, sim - na pasta META-INF.

Ja criei amigo a pasta, e continua lançando essa exceção,
em qual local tem que colocar esse meta-inf no maven?

Não é no maven, é no projeto, mesmo. Você já deve ter uma pasta WEB-INF, crie META-INF no mesmo local.

Não.
Projetos web possuem uma pasta META-INF dentro de WebContent.
Esta, em específico, precisa ficar na raiz dos códigos fonte.
No caso do maven, a estrutura dos packages é diferente:

Projeto
> src/main/java
>> br.com.suaempresa.seuprojeto...
>>META-INF
>>> persistence.xml

Lembrando que o BD já deve estar criado, o hibernate irá criar as tabelas, não o DB.

Isso seria suficiente para gerar as tabelas?

public static void main(String[] args) {
		// TODO Auto-generated method stub
		EntityManagerFactory emf;
		 EntityManager em;
		
		emf = Persistence.createEntityManagerFactory("conexao");
		em =  emf.createEntityManager();
	}

Mas ao rodar gera essa exception
Exception in thread “main” javax.persistence.PersistenceException: [PersistenceUnit: conexao] Unable to build EntityManagerFactory

Sim, isso já criaria as tabelas.

[quote=adam_sandler]
Exception in thread “main” javax.persistence.PersistenceException: [PersistenceUnit: conexao] Unable to build EntityManagerFactory[/quote]

Por gentileza favor postar a pilha de erros completa.

Exception in thread "main" javax.persistence.PersistenceException: [PersistenceUnit: conexao] Unable to build EntityManagerFactory at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:914) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:889) at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:56) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47) at br.com.projetos.sisCorp.ultil.Mapeamento.main(Mapeamento.java:18) Caused by: org.hibernate.AnnotationException: @Temporal should only be set on a java.util.Date or java.util.Calendar property: br.com.projetos.sisCorp.model.Cobranca.dataProcesso at org.hibernate.cfg.annotations.SimpleValueBinder.setType(SimpleValueBinder.java:148) at org.hibernate.cfg.annotations.PropertyBinder.makePropertyAndValue(PropertyBinder.java:186) at org.hibernate.cfg.annotations.PropertyBinder.makePropertyValueAndBind(PropertyBinder.java:201) at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:2011) at org.hibernate.cfg.AnnotationBinder.processIdPropertiesIfNotAlready(AnnotationBinder.java:765) at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:684) at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3406) at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3360) at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1334) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1724) at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:84) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:904) ... 5 more

Vc anotou com @Temporal pra algum outro tipo de atributo. Veja se nao importou errado o campo Date, pegando de java.sql.Date

Agora tá melhor.

A falha está na sua classe Cobranca.
Como já está esclicito no print:
A anotação @Temporal só pode ser usada em java.util.Date porém seu atributo dataProcesso é um Calendar.

Caused by: org.hibernate.AnnotationException: @Temporal should only be set on a java.util.Date or java.util.Calendar property: br.com.projetos.sisCorp.model.Cobranca.dataProcesso 

Cara tenta aprender a analisar os erros, fica muiiiiito mais facíl de resolver a falha, como pode ver tá explicito alí o que está acontecendo. Logo que pegar a prática você vai ver.

EDIT

Deixei a tela de resposta muito tempo aberta, igor_ks já lhe respondeu.

Corrigi, e lançou essa outra exception

Caused by: org.hibernate.DuplicateMappingException: Duplicate query mapping Produto.findAll

na classe produtos esta assim, lembrando que em todas as classes, eu criei um @NamedQuery
em produtos criei @NamedQuery(name=“Produto.findAll”, query=“SELECT p FROM Produto p”)

como vi em um livro, nao sei se isso é necessario.
estou meio perdido ainda, por que esta falando que esta duplicado?

Coloque a plilha de erros completa.

Certeza que não tem outra @NamedQuery com mesmo nome em qualquer outra classe?

name="Produto.findAll"

Ola, eu corrigi, e novamento mais erros:

Caused by: org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: br.com.projetos.sisCorp.model.NotaFiscal.notafiscal in br.com.projetos.sisCorp.model.Cfop.notasfiscais
at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:666)
at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:626)
at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:66)
at org.hibernate.cfg.Configuration.originalSecondPassCompile(Configuration.java:1586)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1359)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1724)
at org.hibernate.ejb.EntityManagerFactoryImpl.(EntityManagerFactoryImpl.java:84)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:904)
… 5 more

Agora esta dando erro no relacionamento, das duas classes.
se precisar posto as classes

Olhe como esta meu relacionamento:

Classe NotaFiscal

@ManyToOne @JoinColumn(name="idCfop") private Cfop cfop;

Classe Cfop

@OneToMany(mappedBy="notafiscal")
	private List<NotaFiscal> notasfiscais;

Fiz assim tbm nas outras classes.
o que pode ser?

Tente mudar na classe Cfop

Classe Cfop

@OneToMany(mappedBy="cfop") private List<NotaFiscal> notasfiscais;

Corrigi esse erro em varias classes, mas apareceu o mesmo erro em outras 2 classes que nao ta corrigindo nem a pau!
joga o mesmo erro, veja:

Classe cobranca

[code]@ManyToOne
@JoinColumn(name=“idCobrancaCliente”)
private CobrancaCliente cobrancaCliente;

[/code]

Classe CobrancaCliente

@OneToMany(mappedBy="cobrancacliente")
	private List<Cobranca> cobrancas;