Hibernate Como fazer para criar as Tabelas e Colunas automaticamente ...?

7 respostas
X

Eu tinha um projeto que ao executa criava as Tabelas e colunas automaticamente, mais quando eu fiz outro ele não cria…
Eu pensava que era a anotações:

@Entity @Table(name="Professor")
Que ia criar mais o projeto está com as anotações, mais não cria…
Alguem pode mi ajudar?

7 Respostas

mauricioadl

coloca essa linha no hibernate.cfg

<property name=“hbm2ddl.auto”>create</property>

paulohonfi

É exatamente onde o mauricioadl falou, você também pode colocar os seguintes valores:

validate | update | create | create-drop

Cada um com uma particularidade, por exemplo o create-drop ele recria a tabela cada vez que você rodar o programa. Muito interessante se você esta testando a aplicação e quer a tabela sempre limpa, no caso de estar testando a inserção de dados por exemplo.

Dê uma olhada em:
http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html

Falou, abraço
Paulo Honfi

X

mauricioadl:
coloca essa linha no hibernate.cfg

<property name=“hbm2ddl.auto”>create</property>

Eu coloquei mesmo assim não cria …

Table 'pdtWeb.Diretor' doesn't exist at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at com.mysql.jdbc.Util.handleNewInstance(Util.java:409) at com.mysql.jdbc.Util.getInstance(Util.java:384) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3566)

paulohonfi

Xandi,

Duas perguntas, o mapeamento no xml do hibernate está correto? A database foi criada antes de subir o projeto?

Se possível, poste o hibernate.cfg.xml.

Abraços

X
paulohonfi:
Xandi,

Duas perguntas, o mapeamento no xml do hibernate está correto? A database foi criada antes de subir o projeto?

Se possível, poste o hibernate.cfg.xml.

Abraços

está aki:

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                                         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"&gt;
&lt;hibernate-configuration&gt;
 &lt;session-factory name=""&gt;
  &lt;property name="hibernate.connection.driver_class"&gt;com.mysql.jdbc.Driver&lt;/property&gt;
  &lt;property name="hibernate.connection.url"&gt;jdbc:mysql://localhost/crud&lt;/property&gt;
  &lt;property name="hibernate.connection.username"&gt;root&lt;/property&gt;
  &lt;property name="hibernate.connection.password"/&gt;
  &lt;property name="hibernate.dialect"&gt;org.hibernate.dialect.MySQLInnoDBDialect&lt;/property&gt;
  &lt;property name="hibernate.format_sql"&gt;true&lt;/property&gt;
  &lt;property name="hibernate.show_sql"&gt;true&lt;/property&gt;

  &lt;property name="hibernate.c3p0.acquire_increment"&gt;1&lt;/property&gt;
  &lt;property name="hibernate.c3p0.idle_test_period"&gt;100&lt;/property&gt;
  &lt;property name="hibernate.c3p0.max_size"&gt;10&lt;/property&gt;
  &lt;property name="hibernate.c3p0.max_statements"&gt;0&lt;/property&gt;
  &lt;property name="hibernate.c3p0.min_size"&gt;5&lt;/property&gt;
  &lt;property name="hibernate.c3p0.timeout"&gt;100&lt;/property&gt;
  &lt;property name="hbm2ddl.auto"&gt;create&lt;/property&gt;

  &lt;mapping class="br.com.x9.entidade.Aluno"/&gt;
  &lt;mapping class="br.com.x9.entidade.Professor"/&gt;
  &lt;mapping class="br.com.x9.entidade.Coordenador"/&gt;
  &lt;mapping class="br.com.x9.entidade.Diretor"/&gt;
 &lt;/session-factory&gt;
&lt;/hibernate-configuration&gt;
Quando eu coloquei a linha
&lt;property name="hbm2ddl.auto"&gt;create&lt;/property&gt;
Sempre que eu executava o sistema apagava minhas tabelas...
paulohonfi

Xandi_m5,

Aparentemente está certo seu xml, pelo menos não visualizei nenhum erro mais visível. Acredito que seja um erro muito simples que está impedindo de gerar a tabela. Dá uma revisada no código, vê se estão com as anotações corretas (assim com os imports: javax.persistence): @Entity, @Id, etc e tal.

Dá uma revisada e vê se encontra alguma coisa errada. Qualquer coisa se não achar nada, posta o erro (printstack) completo. Se der certo, poste a solução para ajudar outras pessoas futuramente.

Falou,
Abraço

drsmachado

Substitua

<property name="hbm2ddl.auto">create</property>

Por

<property name="hbm2ddl.auto">update</property>
Criado 23 de janeiro de 2012
Ultima resposta 26 de jan. de 2012
Respostas 7
Participantes 4