[RESOLVIDO] Hibernate - Dúvida com duas chaves primárias String

2 respostas
C

Bom dia,

estou com o seguinte problema:
Onde trabalho, temos um sistema Delphi, com banco de dados em Firebird onde por exemplo, a chave primária da tabela de pedidos é a data e o número do pedido, onde o número do último pedido fica salvo na empresa… (O mesmo cliente possuia mais de uma empresa, então ele escolhe qual ele vai usar no momento de fazer login).
Então, já possuímos um modulo web deste sistema, feito totalmente sem frameworks… o que nos dá um grande trabalho fazer todas as funções de salvar, pesquisa e tudo mais na “garra”. Trabalhei um pouco com hibernate e por isso estamos pensando em colocar o hibernate no novo modulo do sistema, pois sabemos que facilita muito no desenvolvimento.

Mas quando usei o hibernate, usei apenas uma chave primária na tabela e era do tipo Long.
Então, a única ajuda que achei até agora foi o seguinte: http://www.guj.com.br/java/147793-resolvido-string-como-chave-primaria-no-hibernate-e-possivel
que não resolve o meu problema, pois ali ele desistiu de usar String e passou para tipo Long… E eu não posso fazer isto… e além disto, preciso usar duas chaves primárias…
Gostaria de uma ideia de como proceder agora, se tem como fazer isto…
Ainda não começamos no desenvolvimentos, mas já estou pensando em todas as tecnologias para quando começarmos já termos um projeto bem pensado.

Obrigado.

2 Respostas

Rafael_Guerreiro

Simplesmente faça assim:

@Entity
@Table(name="TB_ENTIDADE")
public class Entidade implements Serializable {
   @Id
   @Column(name="ID1", length=2, columnDefinition="char")
   private String id1;

   @Id
   @Column(name="ID2", length=2, columnDefinition="char")
   private String id2;

// É MUITO interessante você sobreescrever os métodos toString(), hashCode() e equals()
// Para facilitar a vida do Hibernate, use o equals e o hashCode baseados somente nos IDs.
// Getters e Setters
}
C

Muito obrigado, este hibernate está pronto para tudo pelo jeito haha!
Abraço!

Criado 11 de outubro de 2012
Ultima resposta 11 de out. de 2012
Respostas 2
Participantes 2