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).
Hibernate ordem dos campos na tabela
6 Respostas
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?
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!
a sequencia dos campos da tabela e/ou dos atributos interfere no q?
Na verdade não existe essa ordem.
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!
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!
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…