Olá amigos, tenho uma classe “Entidade” onde esse cara possui alguns metodos e algumas propriedades, ID e DATA de criação são algumas delas e todas as minhas entidades a herda.
Fiz a herança com hibernate tudo tranquilo. Mas… me deparei que o ID que esta nela e cada entidade abaixo herda vem com a mesma sequence la de cima. Então ficaria meio estranho, tipo, imagina, eu inserindo um cliente ( id 1 ) e um endereco ( que será id “2” kkk, deveria ser 1 tbem ja q é o primeiro hehe ).
Alguem ja passou por isso? Terei de colocar o ID com sua propria sequence em cada cara?
Olá amigos, tenho uma classe “Entidade” onde esse cara possui alguns metodos e algumas propriedades, ID e DATA de criação são algumas delas e todas as minhas entidades a herda.
Fiz a herança com hibernate tudo tranquilo. Mas… me deparei que o ID que esta nela e cada entidade abaixo herda vem com a mesma sequence la de cima. Então ficaria meio estranho, tipo, imagina, eu inserindo um cliente ( id 1 ) e um endereco ( que será id “2” kkk, deveria ser 1 tbem ja q é o primeiro hehe ).
Alguem ja passou por isso? Terei de colocar o ID com sua propria sequence em cada cara?
E ae darksteel3000, cria sequences para cada entidade. Aí no momento do insert, faz algo assim:
public Pessoa insert(Pessoa entity)
{
entity.getId().setCodigo(/*aqui o seu código que pega as sequences do banco*/);
return this.repository.insert(entity);
}
Hebert_Coelho
Se você está usando sequence do JPA, o ID realmente deve ficar na super classe.
Nunca vi esse tipo de opção que vc quer para o hibernate não.
darksteel3000
Pq vai ficar estranho deixar na super classe, pq a sequence deverá estar la.
E dai, vai ficar gerando ID 1 pro usuario e ao salvar o endereço, gera o ID 2 ao inves de 1 tambem, por causa da sequence.
Ja está desta forma, o pro é como vou fazer o lance da Anotação para SequenceGeneration tendesse? Se eu colocar ela em cima deste atributo ID, só será gerada uma sequence para todas as entidades abaixo e não uma para cada entidade.
P
paulocrdoso
dessa forma não, o Hibernate/JPA , cria um “sequence” para cara entidade que estende a entidade superior;
coloca parte do seu código para que agente consiga ver.
Exemplo de uma classe extendida:
@Entity@Table(name="entidades")publicclassEntidadeextendsEntidadeAbstrata{privatestaticfinallongserialVersionUID=1L;/** * Código auxiliar */@Column(name="cod_auxiliar",unique=true,nullable=false,length=6)privateStringcodAuxiliar;//.... repare que a classe não possui id pois ja está na classe pai