Bom dia,
continuando meus estudos sobre o hibernate me deparei com um novo problema.
Possuo no BD (Firebird) a tabela CabInventario e ItensInventario.
A chave primaria da tabela CabInventario e composta pelo codigo da empresa e pela data do inventario.
A chave primaria da tabela ItensInventario e composta pelo codigo da empresa, pela data do inventario, deposito e codigo do produto.
pesquisei e vi que para criar uma chave composta é necessario criar uma classe @Embeddable. Até ai tudo bem. O problema porem é que ao executar o teste recebo o seguinte erro:
not mapped to a single property
Eis o codigo da minha classe Cabinventario.
@Entity
@Table(name = “CabInventario”)
@XmlRootElement
public class CabInventario implements Serializable {private static final long serialVersionUID = 1L;
@EmbeddedId
private PKCabInventario getid;
@Column(name = “desc_inv”)
private String descricao;
@ManyToOne
@JoinColumn(name = “codemp”, insertable = false, updatable = false, nullable = false)
private Empresa empresainv;
@ManyToOne
@JoinColumns({
@JoinColumn(name = “codemp”, referencedColumnName = “codemp”, nullable = false, updatable = false, insertable = false),
@JoinColumn(name = "data, referencedColumnName = “data”, nullable = false, updatable = false, insertable = false) })private ItensInventario itensinv;
//gets e setts
@Embeddable
public static class PKCabInventario implements Serializable {private static final long serialVersionUID = 1L; @Column(name = "codemp", nullable = false) private String empresainv; @Column(name = "data", nullable = false) private Date datainv; //gets e setts
}
Logo depois criei a minha classe ItensInventario:
@Entity
@XmlRootElement
@Table(name = “itensinventario”)
public class IInventario implements Serializable {private static final long serialVersionUID = 1L;
@EmbeddedId
private PKItensInvent getid;
@Column(name = “qtde”, nullable = false)
private BigDecimal qtdeinvt;
@OneToMany
private transient CabInventario cabinv;//gets e setss
@Embeddable
public static class PKItensInvent implements Serializable {private static final long serialVersionUID = 1L; @Column(name = "codemp", nullable = false) private String codemp; @Column(name = "data", nullable = false) private Date data; @Column(name = "coddep", nullable = false) private String coddepositoitensinvent; @Column(name = "codprod", nullable = false) private String codproditensinvet; //gets e setts
}
Será que alguém pode me explicar o motivo desse erro?
referencedColumnNames(codemp, data) not mapped to a single property