Geração de Id com zero a esquerda no Hibernate [RESOLVIDO]

Boa tarde a todos. Preciso gerar um Id numa tabela Mysql usando Hibernate, mas esse Id deve ter 13 dígitos e ser sequencial.

Por exemplo: o primeiro item deve ser 0000000000001, o segundo 0000000000002, etc…

Lembrando que normalmente o Hibernate gera o Id assim:
Item 1 = Id 1 (Mas preciso Item 1 = Id 0000000000001)
Item 2 = Id 2 (Mas preciso Item 2 = Id 0000000000002)

No MySql, pra gerar essa tabela com esse Id, deve-se usar a seguinte sintaxe: int(13) ZEROFILL.
Há alguma maneira de eu fazer isso no Hibernate Annotations? O que eu devo fazer, devo sobrescrever alguma configuração
da geração de Id? Se sim, qual configuração? Desde já agradeço.

Estou curioso do pq disso.

Não basta implementar na camada view um render que preencha com zero?
Até pq se o ID for definido como long no hibernate… ai não dá… só se for string mesmo

cara… isso é java… seu id é um Long ou um Integer… ele não vai ter 00000000 na frente…

se vc quer isso vc pode fazer algo como

[code]private static final String ZERO_FILL = “%013d”;

@Transient
public String getIdZeroFill() {
return getId() == null ? null : String.format(ZERO_FILL,getId());
}[/code]

sempre que quiser exibir o id com zero antes vc usar o getIdZeroFill() (ou da um nome mais bonito pra ele)

Ps.: não lembro bem se o formato da string ta 100%, mas acho que é assim mesmo “%013d”, se não der certo avisa…
Ps2.: o @Transient é pra avisar ao hibernate que isso não se trata de um campo persistente que é apenas uma propriedade a mais da classe

É por causa da Legislação do Cupom Fiscal, mais especificamente o DAV. Segundo o Ato Cotepe 29-08:

É por isso :wink:

Bom, dah pra fazer isso no Hibernate Assim:

 @Column(ColumnDefinition = "int(13) ZEROFILL")

Mas quando buscar isso no JAVA não vai rolar, porque até onde eu saiba, 0 a esquerda no JAVA não aparece, a não ser que seja mesmo String.

O problema nem era pegar Int ou Long com zero a esquerda, já imaginava isso. O negócio era o Hibernate Mesmo. Mas vcs jah me deram solução pra pegar o ID tbm. Vlw!!!

ColumnDefinition é uma propriedade que só é usada pra Eng. Reversa, ou seja… ela é usada quando o hibernate precisar realizar um CREATE TABLE ou ALTER TABLE, serve apenas pra construir as tabelas no banco, não muda nada quando a manipulação dos dados.

o que vc precisa fazer é converter para string, e usar formatado

Tranquilo, eu saquei isso. Mesmo assim, eu só queria saber como criar a Tabela dessa maneira. Vou usar String mesmo. Abrass.