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!
Até o nosso próximo post!
Valeu cara, me ajudou muito. Já tinha esquecido como se faz heheheheh
ResponderExcluirOla Robson
ResponderExcluirMto bom seu exemplo acima.
Tentei usar mas esta dando um erro para mim :
[TopLink Info]: 2010.08.02 02:07:40.187--ServerSession(17298525)--TopLink, version: Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))
[TopLink Info]: 2010.08.02 02:07:40.296--Not able to detect platform for vendor name [Firebird 2.13WI-V2.1.3.18185 Firebird 2.1/tcp (programador3)/P10]. Defaulting to [oracle.toplink.essentials.platform.database.DatabasePlatform]. The database dialect used may not match with the database you are using. Please explicitly provide a platform using property toplink.platform.class.name.
Exception in thread "AWT-EventQueue-0" javax.persistence.PersistenceException: Exception [TOPLINK-7144] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.ValidationException
Exception Description: GEN_NOMES: platform DatabasePlatform doesn't support NativeSequence.
at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:239)
at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java:93)
at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:126)
at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:120)
at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:91)
Boa noite! Tente isso:
Excluir@Id
@GeneratedValue(generator = "inc")
@GenericGenerator(name = "inc", strategy = "increment")
private Long id;
Ola Robson
ResponderExcluirSou novato em JAVA e estou desenvolvendo aplicacao com Hibernate JPA e FIREBIRD.
Li em varios lugares que o FIREBIRD é incompativel com JPA .
Como vc fez rodar sua aplicacao exemplo.
Tentei usar seu exemplo e deu erro acima.
Qual seu email ?? o meu é gabriel@mgsystem.inf.br
Obrigado
Deu certinho! Parabens!
ResponderExcluir