resolvi detonar todos os meus mapeamentos XML e passar a usar as anotações do Hibernate.
O problema é que na nossa framework, temos uma classe básica com uma propriedade id. Como posso fazer para minhas classes de domínio, que herdam dessa básica, terem geradores de sequencia diferentes?
Se não tiver sido claro, por favor avisem, que tentarei explicar melhor!
Encontrei uma solução, não sei se é a única, mas atende:
Na tua classe base, você mapeia o id definindo sua sequência, ou seja, põe o nome da sequencia que vc quer usar, então na sua sub-classe, você declara essa sequencia, com o mesmo nome.
Por exemplo:
// Na classe base:
@MappedSuperclass
public abstract class BasicBean {
@Id @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQUENCE")
private Integer id;
...
}
// Na sub-classe
@Entity
@Table(name="promessa")
@SequenceGenerator(name="SEQUENCE", sequenceName="promessa_id_seq")
public class Promessa extends BasicBean {
...
}
Cara…me tira uma duvida…
Jah q tu eliminou todos os teus hbm’s da tua aplicação…tu jah tem algum caso de chave composta com annotation q esteja funcionando???
Aê Kaique, vai nessa documentação que ela explica direitinho como fazer isso…
Eu ainda não detonei tudo não, estou fazendo a mudança gradativamente e achando algumas complicações e limitações no mapeamento com annotations… posto mais tarde sobre estas…
Um importantíssimo detalhe: Presta atenção na ordem que tú está declarando os atributos que fazem a chave composta. Deve ser essa mesma ordem que tu vai usar para fazer os JoinColumns!!! Caso contrário, não funciona!