[RESOLVIDO]Hibernate gravando fora da ordem no Banco!

4 respostas
J

A MINHA DÚVIDA é que ao ser criado a tabela no banco, os atributos que estão na classe, são gravados fora da ordem. O Hibernate pega os atributos da classe de cima para baixo e cria no banco desta forma.
Exemplo: Tenho a classe Operacao com os atributos na seguinte ordem:
1- Nome;
2-dataCadastro.
No banco ele, ao criar a tabela, ele inverte essa ordem.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
		"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
		"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost/intrasur</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">15071991</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    	
    	<!-- Configurações de Pool de conexão do C3PO -->
		<property name="c3po.min_size" >5</property>
		<property name="c3po.max_size" >20</property>
		<property name="c3po.timeout" >300</property>
		<property name="c3po.max_statements" >50</property>
		<property name="c3po.idle_test_period" >3000</property>

		<!--Configurações de Debug -->
		<property   name="show_sql" >true</property>
		<property   name="format_sql" >true</property>
		<property   name="generate_statistics" >true</property>
		<property   name="use_sql_comments" >true</property>

		<!-- Drop and re-create the database schema on startup-->
		<property   name="hbm2ddl.auto" >update</property>

		<!--  Mapeamento das entidades -->
		<mapping class="com.suporte.model.Usuario" />
		<mapping class="com.suporte.model.Operacao" />
		
	</session-factory>
</hibernate-configuration>

Código da Classe

import java.util.Calendar;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table(name="operacao")
public class Operacao 
{
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private int codOperacao;
	
	@Column
	private String nome;
	
	@Column
	@Temporal(TemporalType.DATE)
	private Date dataCadastro;
	
	
	public Operacao(){
		Calendar cal = Calendar.getInstance();
		this.dataCadastro = cal.getTime();
	}
	
	
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public Date getDataCadastro() {
		return dataCadastro;
	}
	public void setDataCadastro(Date dataCadastro) {
		this.dataCadastro = dataCadastro;
	}
	
	

}

4 Respostas

pauloarlobo

jonatex, passei por isso tb, tanto no Postgres como Mysql, pra mim ele cria em ordem alfabetica, somente priorizando o ID como primeiro

J

E não existe nenhuma solução para isso?

pauloarlobo

Cara hoje eu participei de um encontro mensal do gojava.org e la abordei esse assunto
realmente nao tem como, o uso da JPA é pra vc esquecer a parte de BD, assim independente do tipo de banco sua a aplicacao vai funcionar blz
basta mudar os dados que vc vai usar de acordo com o banco desejado
para o banco ficar como o modelo de um MER, vc tem que fazer ele na mao mesmo
ai uma duvida, melhor ficar preso ao BD ou poder escolher qual banco de dados usar sem mudar a aplicacao?

J

Obrigado cara.
Não acho interessante ficar preso no BD.
Deixemos tudo por conta da JPA.

Criado 26 de agosto de 2011
Ultima resposta 27 de ago. de 2011
Respostas 4
Participantes 2