Ola caros amigos, estou com um problema no meu mapeamento com Hibernate Annotations e JPA de chave primaria composta, queria que a tabela gerada pelo export schema do hibernate gerasse a seguinte tabela:
create table TB_RASTJOIN (
ID_RASTJOIN int4 not null,
VERSION_RASTJOIN int8,
ID_CBA int4 not null,
ID_VEICULO int4 not null,
ID_EMPRESA int4 not null,
ID_MOTORISTA int4 not null,
primary key (ID_RASTJOIN, ID_CBA, ID_EMPRESA, ID_MOTORISTA, ID_VEICULO)
/* ... constraints foreing key ...*/
);
mas ele esta gerando assim:
create table TB_RASTJOIN (
ID_RASTJOIN int4 not null,
VERSION_RASTJOIN int8,
ID_CBA int4 not null,
ID_VEICULO int4 not null,
ID_EMPRESA int4 not null,
ID_MOTORISTA int4 not null,
primary key (ID_CBA, ID_EMPRESA, ID_MOTORISTA, ID_VEICULO)
/* ... constraints foreing key ...*/
);
Observem que a coluna ID_RASTJOIN não esta sendo gerada como chave primaria composta, abaixo segue o código da classe mapeada:
@Entity
@Table(name = "TB_RASTJOIN")
public class RastJoinVO {
@Embeddable
static class CompositeKey implements Serializable {
private static final long serialVersionUID = 1L;
@Id /* se eu tirar essa annotations é lançado um nul pointer */
@SequenceGenerator(name = "SEQ_ID_TB_RASTJOIN", sequenceName = "SEQ_ID_TB_RASTJOIN")
@GeneratedValue(generator = "SEQ_ID_TB_RASTJOIN", strategy = GenerationType.AUTO)
@Column(name = "ID_RASTJOIN")
private int id;
@OneToOne(fetch = FetchType.LAZY, targetEntity = br.com.autweb.vo.cba.CbaVO.class)
@JoinColumn(name = "ID_CBA", nullable = false)
@ForeignKey(name = "ID_CBA_TB_RASTJOIN_FK")
private CbaVO cbaVO;
@OneToOne(fetch = FetchType.LAZY, targetEntity = br.com.autweb.vo.empresa.EmpresaVO.class)
@JoinColumn(name = "ID_EMPRESA", nullable = false)
@ForeignKey(name = "ID_EMPRESA_TB_RASTJOIN_FK")
private EmpresaVO empresaVO;
@OneToOne(fetch = FetchType.LAZY, targetEntity = br.com.autweb.vo.veiculo.VeiculoVO.class)
@JoinColumn(name = "ID_VEICULO", nullable = false)
@ForeignKey(name = "ID_VEICULO_TB_RASTJOIN_FK")
private VeiculoVO veiculoVO;
@OneToOne(fetch = FetchType.LAZY, targetEntity = br.com.autweb.vo.motorista.MotoristaVO.class)
@JoinColumn(name = "ID_MOTORISTA", nullable = false)
@ForeignKey(name = "ID_MOTORISTA_TB_RASTJOIN_FK")
private MotoristaVO motoristaVO;
/* ... construtores / gett / set ... */
}
/**
* Chave composta primaria
*/
@EmbeddedId
private CompositeKey compositeKey;
/**
* Controle de concorrência do objeto persistente.
*/
@Version
@Column(name = "VERSION_RASTJOIN")
private long version;
/* ... construtores / gett / set ... */
}
Quem puder me ajudar, desde já muito obrigado.