Hibernate ordem dos campos na tabela

6 respostas
griciolli

Pessoal boa tarde, alguém sabe como faço para que o hibernate obedeça a ordem dos campos da minha classe (ordem dos campos da classe == ordem dos campos na tabela da base de dados).

6 Respostas

thiagocg

Como assim obedecer a ordem dos campos?
Vc diz no retorno de uma consulta? Se for não da pra vc fazer um order by em hql ou criteria de acordo com o seu criterio do banco?

griciolli

Boa tarde thiagocg, acho que eu não fui muito claro, tenho uma classe mapeada tudo correto, quando utilizo SchemaExport do hibernate para gerar o banco, ele está criando as tabela normamente só que a ordem das colunas não segue a mesma ordem dos campos na classe.

classe Processo

@EmbeddedId
	private ProcessoPk		processoPk;
	
	@Column(length=1, nullable=false)
	private String			situacao;
	
	@Column(name="tipo_vitima", length=30)
	private String			tipoVitima;
        
//set and get

classe ProcessoPk

@ManyToOne
	@ForeignKey(name="fk_processo_empresa")
	@JoinColumn(name="empresa",columnDefinition="INTEGER",nullable=false)
	private Empresa		empresa;
	
	@Column(name="ano",columnDefinition="INTEGER",nullable=false)
	private Integer		ano;
	
	@Column(name="processo",columnDefinition="INTEGER",nullable=false)
	private Integer		processo;

//set and get

A tabela fica com os campos

CREATE TABLE PROCESSO 
(
  ANO                                          INTEGER         NOT NULL,
  PROCESSO                                INTEGER         NOT NULL,
  TIPO_VITIMA                             VARCHAR(    30)  COLLATE NONE,
  SITUACAO                                VARCHAR(     1) NOT NULL COLLATE NONE,
   EMPRESA                                 INTEGER         NOT NULL,
  PRIMARY KEY (ANO, EMPRESA, PROCESSO)
)

Não seguindo a mesma sequência dos campos da classe!

P

a sequencia dos campos da tabela e/ou dos atributos interfere no q?

Na verdade não existe essa ordem.

griciolli

Pelo fato da classe ProcessoPk estar como (empresa,ano,processo) e na tabela esta (ano,empresa,processo), quando envolver alguma busca ou foreing key que utilize a Pk dessa tabela, a classe ProcessoPk está trocando o valor da empresa, pelo ano. E mesmo eu alterando a sequência das colunas da tabela na mão eu continuo tendo esse problema!

thiagocg

Cara, ou eu não entendi ou o q vc esta falando não tem muito haver, pq o fato da tabela não seguir a ordem dos seus atributos não interfere em nada, o q vc tem q fazer é criar um objeto da sua classe ProcessoPk e então fazer a busca por ele, e isso independe da posição da coluna no banco!

P

Vou insistir… na verdade não existe essa ordem…

A forma como os dados são apresentados mostra em uma ordem, mas a forma como são armazenados, não existe a ordem…

Criado 24 de outubro de 2008
Ultima resposta 24 de out. de 2008
Respostas 6
Participantes 3