Mostrando postagens com marcador JPA. Mostrar todas as postagens
Mostrando postagens com marcador JPA. Mostrar todas as postagens

quinta-feira, 29 de janeiro de 2009

Firebird + JPA e o Problema com o Generator

Resolvi fazer este post depois de muito sofrer para integrar o JPA com o Firebird. O grande problema que eu encontrei foi com o esquema de geração de ids do firebird. Firebird usa um esquema chamado de Generator, é muito parecido com esquema de sequences de bancos como oracle. Então vamos à solução do problema. Abaixo temos a nossa entidade Aluno, com as anotações do JPA. (omitimos os imports e os get/set, pois o foco é no generator.
@Entity
@Table(name="TB_BAIRRO")
@SequenceGenerator(name="GEN_TB_BAIRRO",sequenceName="GEN_TB_BAIRRO_ID")
public class Bairro extends BaseEntity {

@Id
@Column(name="BAIRRO_SEQ")
@GeneratedValue(strategy=GenerationType.AUTO,generator="GEN_TB_BAIRRO")
private Integer id;

@Column(name="BAIRRO_DSC")

private String descricao;

Definimos na classe qual é a sequence (no firebird Generator) que vai ser usada pra gerar a primary da key da tabela. O atributo name é importante pois ele vai ser usado, como pode ser visto acima, na anotação GeneratedValue, cuja strategy deve ser do tipo AUTO, e no parâmetro generator, informamos o nome que demos à nossa SequenceGenerator da tabela.
Até o nosso próximo post!