Estou enfrentando um problema estranho com o Hibernate.
Eu tenho o seguinte mapeamento:
@Entity
@Table("TABELA_A")
public class A implements Serializable{
@EmbeddedId
@AttributeOverrides({@AttributeOverride(name="pk1",column=@Column(name="pk1",columnDefinition="int",nullable=false)),
@AttributeOverride(name="pk2",column=@Column(name="pk2",columnDefinition="int",nullable=false)),
@AttributeOverride(name="pk3",column=@Column(name="pk3",columnDefinition="smalldatetime",nullable=false))})
PKClass pk =new PKClass();
@OneToMany
private List<B> bs;
...
}
@Embeddable
public class PKClass implements Serializable{
@Column(name="pk1",columnDefinition="int",nullable=false)
private int pk1;
@Column(name="pk2",columnDefinition="int",nullable=false)
private int pk2;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="pk3",columnDefinition="smalldatetime",nullable=false)
private Date pk3;
...
}
@Entity
@Table("TABELA_B")
public class B implements Serializable{
...
}
Nesse mapeamento, o Hibernate não está reconhecendo o campo pk3(do tipo Date) como atributo da chave primária de A, disparando a seguinte exceção:
Foreign key (FK80579693F792A7A3:FK_TABELA_B_A [pk1,pk2,pk3])) must have same number of columns as the referenced primary key (TABELA_A [pk1,pk2])
Percebam que o erro ocorre no mapeamento da chave primária de A, especificamente com o campo do tipo date, que está sendo solenemente ignorado.
Não descobri o motivo do erro, se alguém tiver uma dica será ótimo.