[RESOLVIDO] JPA - Obter chave gerada por Sequence em Trigger

[quote=lap_junior][quote=lap_junior]Já que existe uma trigger que inclui o ID automaticamente na tabela, por que você não configura este ID como uma coluna de auto incremento, já testou isto?

   @Id  
   @Column(name="ID_PAI", nullable = false)      
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private long id;

flw[/quote]

Acabei copiando errado, não AUTO mas sim IDENTITY. Isso porque com esta trigger esta coluna funciona como se fosse autoincremento.[/quote]

O Oracle não suporta colunas IDENTITY. Isso é usado no SQL Server e outros…

Paz e bem!

anyone? :roll:

Putz ainda nada T_T, tentou outras alternativas cara? Posta aí para discutirmos.

Nessa mesma tabela, você grava um campo TimeStamp?

questão complicada, considere estender o hibernate e criar sua própria estratégia de geração de sequence.

O.o rs

É pessoal, fui ver com uns colegas aqui e eles tiveram que usar um GenericGenerator (que herda de AbstractPostInsertGenerator e implementa Configurable) para resolver o problema. Ou seja, dentro do Generator faz-se um ‘select curval’ da vida… Vale lembrar que o GenericGenerator é Hibernate e não JPA.

@Entity  
@Table(name = "PAI")  
public class Pai implements Serializable {  

@Id  
@Column(name="ID_PAI", nullable = false)      
@GeneratedValue(generator="PaiSeq")
@GenericGenerator(name = "PaiSeq", strategy = "br.com.guj.GeneratorTabajara", parameters = { @Parameter(name = "sequence", value = "PAI_SQ") })
private int id;  
   
@OneToMany(mappedBy="pai", fetch = FetchType.LAZY)  
private List<Filho> filhos;  

//gets, sets etc.  
}

Bom, está aí. Boa pedida para o JPA na próxima versão pois, ninguém merece ficar criando ‘workarrounds’…

Paz e bem!

Justo.

Olá pessoal, blz?

Como me procuraram afim de sabem qual solução eu havia usado, passo o link de um post no fórum do Hibernate com a solução: https://forum.hibernate.org/viewtopic.php?p=2379010

Valeu!

acredito que a dica do rapaz ali que disse pra usar IDENTY funcionaria, pois a trigger esta simulando um campo AUTO_INCREMENT. Tive um problema semelhante aqui, facilitei a vida de todos, e utilizei a estrategia SEQUENCE e deletei as triggers.

Na verdade, acho esse lance de usar trigger pra gerar ID, uma verdadeira gambiarra