GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

ReferencedColumnNames not mapped to a single property

java
front-end
hibernate
programação
Tags: #<Tag:0x00007ff78c1ba4a0> #<Tag:0x00007ff78c1ba360> #<Tag:0x00007ff78c1ba220> #<Tag:0x00007ff78c1ba0e0>

#1

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