[RESOLVIDO]JPA + Hibernate não estão gerando tabelas no banco MySQL

[b]Boa Noite Pessoal!

Galera estou desenvolvendo um trabalho da faculdade, mas tá dando um pepino atrás do outro, isso porque sou iniciante e nao tenho muita pratica.

Estou realizando um projeto utilizando JPA e o Hibernate, mas já li varios casos semelhantes e nenhum até agora solucionou o meu problema.

O que ocorre é que simplesmente minhas tabelas não estão sendo geradas no banco (estou usando o MySql)

Alguem pode me dar um help, creio que minha duvida em algum momento na vida possa ser de outra pessoa.

Bem, vou postar as classes pertinentes, caso falte alguma é só pedir.

persistent.xml:[/b]

<?xml version="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="CahiPU" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <class>com.accurate.model.Usuario</class> <class>com.accurate.model.SystemUser</class> <class>com.accurate.model.Tasks</class> <class>com.accurate.model.Project</class> <class>com.accurate.model.Teste</class> <properties> <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/cahi"/> <property name="javax.persistence.jdbc.user" value="root"/> <property name="javax.persistence.jdbc.password" value="pomarola"/> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> <property name="hibernate.connection.shutdown" value="true"/> <property name="hibernate.hbm2ddl.auto" value="update"/> <property name="hibernate.show_sql" value="false"/> <property name="hibernate.format_sql" value="false"/> </properties> </persistence-unit> </persistence>

Exemplo de um entidade:

[code][b]@Entity
@Table(name = “project”)
@NamedQuery(name = “Usuario.findUserByName”, query = “select u from SystemUser u where u.name = :name”)
public class Project implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "idProject")
private int idProject;
@Column(name = "name", length = 45, nullable=false)
private String name;
@Column(name = "startDate", length = 45)
@Temporal(TemporalType.DATE)
private Date startDate;
@Column(name = "finishDate", length = 45)
@Temporal(TemporalType.DATE)
private Date finishDate;
@JoinColumn(name = "fk_idSystemUser", referencedColumnName = "idSystemUser")
@ManyToOne
private SystemUser idSystemUser;
@OneToMany(mappedBy = "idProject")
private Collection<Tasks> tasksCollection;

//Abaixo segue os getters e setters[/b]
[/code]

Agradeço a todos pela atenção.

E aparece alguma mensagem de erro no console?
Outra coisa, você já criou o banco de dados no MySql? O Hibernate vai apenas criar as tabelas não o banco.

Oi romarcio, não aparece nenhuma mensagem no console.
Sim o banco está criado tem até tabelas que criei anteriormente rodando.

Valeu…

[quote=manolo]Oi romarcio, não aparece nenhuma mensagem no console.
Sim o banco está criado tem até tabelas que criei anteriormente rodando.

Valeu…[/quote]
Estranho :frowning:

Tenta criar usando essa classe então:

[code]
package br.mb.tutorialHibernateJpa.agenda;

import org.hibernate.cfg.Configuration;
import org.hibernate.ejb.Ejb3Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

public class GeraBanco {
public static void main(String[] args) {
Ejb3Configuration cfg = new Ejb3Configuration();

    //agenda eh o nome do persistence-unit no persistence.xml.
    cfg.configure("agenda", null);

    Configuration hbmcfg = cfg.getHibernateConfiguration();

    SchemaExport schemaExport = new SchemaExport(hbmcfg);
    schemaExport.create(true, true);
}

}[/code]

[quote=manolo]Oi romarcio, não aparece nenhuma mensagem no console.
Sim o banco está criado tem até tabelas que criei anteriormente rodando.

Valeu…[/quote]

Dropa as tabelas e os squences e roda novamente o projeto. Aqui sempre dava esse bug ae eu dropava e pimba.

Olá romarcio! Então, também não funcionou da maneira que você descreveu acima.

Incriveu que pareça da maneira que o JahCode passou funcionou!

Não me pergunte o motivo, pois eu tbm gostaria de saber rs…rs…

Valeu a todos pela força. Bom final de semana.

[quote=manolo]Olá romarcio! Então, também não funcionou da maneira que você descreveu acima.

Incriveu que pareça da maneira que o JahCode passou funcionou!

Não me pergunte o motivo, pois eu tbm gostaria de saber rs…rs…

Valeu a todos pela força. Bom final de semana.[/quote]

Esse é um bug do JPA. Eu também não sei o porque ocorre vou procurar melhor o porque disso e posto mais tarde.

Precisando prende o grito.

Estranho esse comportamento do JPA.

Chegou a testar por exemplo, mudar o atributo de update para create ou drop? Para ver se ele fazia isso?

[quote=romarcio]Estranho esse comportamento do JPA.

Chegou a testar por exemplo, mudar o atributo de update para create ou drop? Para ver se ele fazia isso?

Sim sim, não tem o q eu mude que o faça persistir… só dropando no bd, eu uso o postgreSQL que pra mim é um dos melhores bds free, e as vezes ele roda mas varias vezes tenho q dropar tudo…

[quote=JahCode][quote=romarcio]Estranho esse comportamento do JPA.

Chegou a testar por exemplo, mudar o atributo de update para create ou drop? Para ver se ele fazia isso?

Sim sim, não tem o q eu mude que o faça persistir… só dropando no bd, eu uso o postgreSQL que pra mim é um dos melhores bds free, e as vezes ele roda mas varias vezes tenho q dropar tudo…[/quote]

Eu não costumo usar postgreSQL, mas ele não trabalha com Sequencia? Você não teria que ter configurado as entidades como Sequence e não Identity?

    @Id  
    @GeneratedValue(strategy = GenerationType.IDENTITY)  
    @Column(name = "idProject")  
    private int idProject;  

[quote=romarcio][quote=JahCode][quote=romarcio]Estranho esse comportamento do JPA.

Chegou a testar por exemplo, mudar o atributo de update para create ou drop? Para ver se ele fazia isso?

Sim sim, não tem o q eu mude que o faça persistir… só dropando no bd, eu uso o postgreSQL que pra mim é um dos melhores bds free, e as vezes ele roda mas varias vezes tenho q dropar tudo…[/quote]

Eu não costumo usar postgreSQL, mas ele não trabalha com Sequencia? Você não teria que ter configurado as entidades como Sequence e não Identity?

@Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "idProject") private int idProject; [/quote]

Sim mesmo alterando a config é a mesma coisa. Um professor meu me respondeu hoje que isso vai ser corrigido na proxima versão do hibernate, eu achava q era o jpa mas pelo q o professor falou isso é bug do driver hibernate.