1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Erro: Attribute "destinatario" has invalid mapping type in this context

Olá pessoal esse erro está aparecendo em minha classe: Attribute "destinatario" has invalid mapping type in this context

Segue meu código:

package br.com.serverchattcc.entity;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;

import br.com.serverchattcc.entity.pk.ConversaPK;
import br.com.serverchattcc.interfaces.models.ConversaInterface;

@Entity
public class Conversa implements ConversaInterface<Usuario> {

    @EmbeddedId
    private ConversaPK conversaPK = new ConversaPK();

    @Column(nullable=false)
    private String msg;

    private boolean lida;

    public Conversa() {}

    public final Usuario getDestinatario() {
        return this.conversaPK.getDestinatario();
    }

    public final void setDestinatario(Usuario destinatario){
        this.conversaPK.setDestinatario(destinatario);
    }

    public final Usuario getRemetente() {
        return this.conversaPK.getRemetente();
    }

    public final void setRemetente(Usuario remetente){
        this.conversaPK.setRemetente(remetente);
    }

    public final void setDtConversa(Date dtConversa) {
        this.conversaPK.setDtConversa(dtConversa);
    }

    public final Date getDtConversa() {
        return this.conversaPK.getDtConversa();
    }

    public final String getMsg() {
        return msg;
    }

    public final void setMsg(String msg) {
        this.msg = msg;
    }

    public final boolean getLida() {
        return lida;
    }

    public final void setLida(boolean lida) {
        this.lida = lida;
    }    
}

E a classe chave ConversaPK onde aparece o erro.

package br.com.serverchattcc.entity.pk;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.JoinColumn;

import br.com.serverchattcc.entity.Usuario;

@Embeddable
public class ConversaPK implements Serializable {

    private static final long serialVersionUID = -6959238465390931720L;

    public ConversaPK() {}

    public ConversaPK(Usuario destinatario, Usuario remetente) {
        this.destinatario = destinatario;
        this.remetente = remetente;
    }    

    @Column(insertable=false)
    private Date dtConversa;

    @Column(nullable=false)
    @JoinColumn(name="remetente")
    private Usuario remetente;

    @Column(nullable=false)
    @JoinColumn(name="destinatario")
    private Usuario destinatario;

    public final Date getDtConversa() {
        return dtConversa;
    }

    public final void setDtConversa(Date dtConversa) {
        this.dtConversa = dtConversa;
    }

    public final Usuario getRemetente() {
        return remetente;
    }

    public final void setRemetente(Usuario remetente) {
        this.remetente = remetente;
    }

    public final Usuario getDestinatario() {
        return destinatario;
    }

    public final void setDestinatario(Usuario destinatario) {
        this.destinatario = destinatario;
    }    

    @Override
    public boolean equals(Object obj) {
        // TODO Auto-generated method stub
        return super.equals(obj);
    }

    @Override
    public int hashCode() {
        // TODO Auto-generated method stub
        return super.hashCode();
    }
}
  • Pois e, nessa classe sua estão faltando os campos: destinatario e remetente. Você está usando o this sendo que esses campos não existem. Como você tem uma instância de ConversaPK em Conversa, isso vai ocasionar erro.

    fabregasf_CEC   12 de abr de 2014
  • Existem sim eles estão logo abaixo com as anotações.

    Thiago Hora   16 de abr de 2014
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags hibernate ou faça a sua própria pergunta.