Duvida com jpa

2 respostas
oberilo

Amigos estou usando netbeans+jpa+toplink+postgres

Estou fazendo um sistema para comunicação interna, onde trabalho.

Foram mapeadas as entidades Funcionario e documento,sendo um para muitos,respectivamente

Quando vou inserir um documento da um erro que diz perca de mapeamento:

Exception Description: Missing mapping for field [funcionarios.id].

Tentei varias maneiras de resolver o problema mas não encontrei ainda.
Algem ja passou o mesmo problema?
desde ja agradeço o esclerecimento ? :smiley:

segue as classes correspondentes

public class Funcionario implements Serializable {

private static final long serialVersionUID = 1L;

@Id

@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = funcionarios_id_seq)

private Integer id;

@Column(name = nome)

private String nome;

@Column(name = cpf)

private String cpf;

@Column(name = rg)

private String rg;

@Column(name = cep)

private String cep;

@Column(name = endereco)

private String endereco;

@Column(name = bairro)

private String bairro;

@Column(name = cidade)

private String cidade;

@Column(name = uf)

private String uf;

@Column(name = cargo)

private String cargo;

@Column(name = matricula)

private String matricula;

@Column(name = email)

private String email;

@Column(name = senha)

private String senha;

@Column(name = fone_01)

private String fone01;

@Column(name = fone_02)

private String fone02;

@Column(name = celular)

private String celular;

@Column(name = administrador)

private Boolean administrador;

@JoinColumn(name = loja_id, referencedColumnName = id)

@ManyToOne

private Loja lojaId;

@OneToMany(mappedBy = funcionarioId)

private Collection documentoCollection;

get´s e set´s …

public class Documento implements Serializable {

private static final long serialVersionUID = 1L;

@Id

@GeneratedValue(strategy =GenerationType.SEQUENCE, generator = documentos_id_seq)

private Integer id;

@Column(name = assunto)

private String assunto;

@Column(name = texto)

private String texto;

@Column(name = tipo_documento)

private String tipoDocumento;

@JoinColumn(name = funcionario_id, referencedColumnName = id)

@ManyToOne

private Funcionario funcionarioId;
get´s e set´s .....

Obs:Os dados do documento veem do form e os dados do funcionario veem da sessão(ja que o funcioanrio no caso é o administrador da sessao )

public class DocumentoDAO {

public void adicionaDocumento(Documento documento,Funcionario funcionario){

EntityManager em=UtilDAO.getEMF().createEntityManager();
Integer id=funcionario.getId();
    Funcionario funcionarioTemp=new Funcionario();
    funcionarioTemp=em.find(Funcionario.class,id);
    try{
        em.getTransaction().begin();          
        documento.setFuncionarioId(funcionarioTemp);         
        em.persist(documento);
       em.getTransaction().commit();
       }finally{
        em.close();
    }
}

}

2 Respostas

felipe_gdr

tenta tirar o atributo referencedColumnName e deixe com o default.

rdantas

Não sei qual o nome que vc usou no BD para o campo id do funcionário, mas se o nome for diferente de id, vc deve colocar @Column(name = “<id_funcionario_na_sua_tabela>”) sobre este campo.

Criado 13 de fevereiro de 2008
Ultima resposta 15 de mar. de 2008
Respostas 2
Participantes 3