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