Geração de ID - JPA/Hibernate

1 resposta
T

Olá turma,

Tenho uma aplicação usando JPA/Hibernate e queria uma estratégia de geração de ID para minhas entidades de funcionasse na maioria dos bancos de dados (pelo menos nos principais: Postgresql, SQL Server e Oracle).

Pelo que andei pesquisando, deveria usar a anotação ?TableGenerator?, porém funciona no Postgresql, no entanto da erro no SQL Server.

Segue abaixo trecho do código:

@TableGenerator(name = "TABLE_SEQUENCE_GENERATOR",
               table = "TABLE_SEQUENCE_GENERATOR",
                pkColumnName = "GEN_KEY",
                valueColumnName = "GEN_VALUE",
                pkColumnValue = "teste_id",
                allocationSize = 1)

@Entity
public class Teste implements Serializable {

private static final long serialVersionUID = 692469697456032559L;

@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator = "TABLE_SEQUENCE_GENERATOR")
  private Long id;

//restante da classe aqui...

Ps.: a ideia é mudar de bando de dados alterando apenas arquivos de configuração (Xml).

Alguém tem alguma ideia?

Abraços,

1 Resposta

R

Faz tempo que não olho isso, mas se não me engano o PostgreSQL e o SQL Server oferecem suporte a campos auto-numerados em ID’s, enquanto o Oracle não oferece e força o uso de SEQUENCE’s. Assim, em princípio, não vejo como fazer uma solução completamente genérica.

Criado 24 de setembro de 2009
Ultima resposta 24 de set. de 2009
Respostas 1
Participantes 2