a
@Sequence
5 Respostas
Nesse caso, vc pode criar uma sequence no banco oracle e essa e suas outras colunas vc pode usar o seguinte mapeamento:
@SequenceGenerator(sequenceName="nomeSequence",name="nomeSequence")
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="nomeSequence")
O único problema de reaproveitar uma sequence para todos os outros ID’s é que a sequence é incrementada toda vez que um valor é solicitado a ela, com isso seus id’s não teriam valores sequencias.
O correto seria uma sequence para cada id das tabelas.
[]'s
eai cara
eu tenho algo do tipo no banco
CREATE TRIGGER TG_SEQ_ID_SERVIDOR
BEFORE INSERT ON SERVIDOR
FOR EACH ROW
BEGIN
SELECT NVL(:NEW.ID_SERVIDOR, SEQ_ID_SERVIDOR.NEXTVAL) INTO :NEW.ID_SERVIDOR FROM DUAL;
END;
como fica?
eu tenho que colocar esse @Sequence em todas minhas classes de persistencia?
Essa sua trigger nem é necessária, seu mapeamento ficaria assim:
@Id
@Column(name = "ID_SERVIDOR", nullable = false)
@SequenceGenerator(sequenceName="SEQ_ID_SERVIDOR",name="SEQ_ID_SERVIDOR")
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_ID_SERVIDOR")
private Long ID_SERVIDOR;
Sim, vc pode utilizar a anotação @Sequence em cada Id de suas entidades.
[]'s
alguem pode me explicar direitinho..
pra uma ID gerada, a mesma gera pra todas tabela eh isso?
Esse eh meu bancoCREATE TRIGGER TG_SEQ_ID_SERVIDOR
BEFORE INSERT ON SERVIDOR
FOR EACH ROW
BEGIN
SELECT NVL(:NEW.ID_SERVIDOR, SEQ_ID_SERVIDOR.NEXTVAL) INTO :NEW.ID_SERVIDOR FROM DUAL;
END;
minha classe Servidor(classe principal)
@Entity
@Table(name="SERVIDOR")
public class Servidor {
@Id
@SequenceGenerator(name = "SEQ_ID_SERVIDOR", sequenceName = "SEQ_ID_SERVIDOR")
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_ID_SERVIDOR")
private Long ID_SERVIDOR;
eh assim q poe?
alguem pode me falar como fica esse annotations meu
vlw
Ficaria assim
@Entity
@SequenceGenerator(name = “nome_aux”, sequenceName = “nome_no_servidor”)
@Table(name=“SERVIDOR”)
public class Servidor {
@Id
@GeneratedValue(generator="nome_aux")
private Long ID_SERVIDOR;