@Sequence

5 respostas
Deluxe

a

5 Respostas

lcegatti

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

Deluxe

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?

lcegatti

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

Deluxe

alguem pode me explicar direitinho..

pra uma ID gerada, a mesma gera pra todas tabela eh isso?

Esse eh meu 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;

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

M

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;
Criado 13 de agosto de 2008
Ultima resposta 14 de ago. de 2008
Respostas 5
Participantes 3