Auto-incremento Hibernate com PrimaryKey Composta

Como faço para colocar auto-incremento numa chave composta do Hibernate?

O auto-incremento seria no primeiro atributo!

[code]@Embeddable
public class TipoExtintorCapacidadePK implements Serializable {

@Column(name = "idTipoExtintor")  
private Integer idTipoExtintor;  

@Column(name = "codigo")  
private String codigo;  

}[/code]

Testei a notação @GenerateValue e não funciona, só funciona com @Id e a mesma não é válida para @Embeddable.

Alguém já implementou, ou possui um técnica de escape?

Impossível, ninguém nunca implementou?

[quote=leonardocfmg]Como faço para colocar auto-incremento numa chave composta do Hibernate?

O auto-incremento seria no primeiro atributo!

[code]@Embeddable
public class TipoExtintorCapacidadePK implements Serializable {

@Column(name = "idTipoExtintor")  
private Integer idTipoExtintor;  

@Column(name = "codigo")  
private String codigo;  

}[/code]

Testei a notação @GenerateValue e não funciona, só funciona com @Id e a mesma não é válida para @Embeddable.

Alguém já implementou, ou possui um técnica de escape?
[/quote]

Não faz sentido você ter uma chave composta da maneira que você está tentando fazer. O conceito de chave primária é identificar o registro como sendo único na tabela, e um identity por si só já faz o trabalho.

Tem algum motivo especial pra querer fazer dessa forma?

O campo idTipoExtintor precisa ser do tipo primary key e auto-increment, até aí normal.

Só que o campo código também precisa ser do tipo primary key, pois não é gerado pelo banco como índice, por ser String é gerado pelo usuário, não podendo existir mais de um código igual.

mas se o id já é primario, unico e gerado por que voce tem que ter essa String como primaria também?

[quote=leonardocfmg]O campo idTipoExtintor precisa ser do tipo primary key e auto-increment, até aí normal.

Só que o campo código também precisa ser do tipo primary key, pois não é gerado pelo banco como índice, por ser String é gerado pelo usuário, não podendo existir mais de um código igual.[/quote]

Então crie uma constraint UNIQUE (unique index) para essa coluna. Aí se tentar inserir dados duplicados o banco de dados não vai deixar.