Erro em jpa -- Repeated column in mapping for entity

Bom dia pessoal!

Estou passando pelo seguinte problema. Tenho tres classes que estao mapeadas conforme abaixo:

@Entity
@Table(name="TBPERMISSAO_EMISSOR_CTE")
public class TbpermissaoEmissorCte implements Serializable {
	@EmbeddedId
	private TbpermissaoEmissorCtePK pk;

	@ManyToOne
	@JoinColumn(name="CD_SITUACAO_CADASTRAL")
	private SituacaoCadastral cdSituacaoCadastral;

	@Column(name="NM_EMISSOR")
	private String nmEmissor;

	@Column(name="SINCRONIZADO_AN")
	private String sincronizadoAn;

	@Column(name="SITUACAO_BLOQUEIO")
	private String situacaoBloqueio;

	private String nsucne;

	@OneToMany(mappedBy="tbpermissaoEmissorCte")
	private Set<Tbinutilizacao> tbinutilizacaoCollection;

	@OneToMany(mappedBy="tbpermissaoEmissorCte")
	private Set<TbhistBloqueioRecfCte> tbhistBloqueioRecfCteCollection;

	@OneToMany(mappedBy="tbpermissaoEmissorCte")
	private Set<TbHistObrigatoriedadeCte> tbhistObrigatoriedadeCteCollection;
	
	@OneToMany(mappedBy="tbpermissaoEmissorCte")
	private Set<TbmodalEmissor> tbmodalEmissors;

	private static final long serialVersionUID = 1L;

	public TbpermissaoEmissorCte() {
		super();
	}
	
	/***Construtor***/

	public TbpermissaoEmissorCte(TbpermissaoEmissorCtePK pk,
			SituacaoCadastral cdSituacaoCadastral, String nmEmissor,
			Set<Tbinutilizacao> tbinutilizacaoCollection) {
		super();
		this.pk = pk;
		this.cdSituacaoCadastral = cdSituacaoCadastral;
		this.nmEmissor = nmEmissor;
		this.tbinutilizacaoCollection = tbinutilizacaoCollection;
	}



	public TbpermissaoEmissorCte(TbpermissaoEmissorCtePK pk,
			SituacaoCadastral cdSituacaoCadastral, String nmEmissor) {
		super();
		this.pk = pk;
		this.cdSituacaoCadastral = cdSituacaoCadastral;
		this.nmEmissor = nmEmissor;
	}
	
	/**
	 * Construtor que seria usado pelo CTE_INTEGRACAO, pois tem os campos
	 * prorpios do mesmo: NSUCNE,SINCRONIZADO_AN,SITUACAO_BLOQUEIO
	 * @04/11/2009
	 * @denize.lopes
	 */
	public TbpermissaoEmissorCte(TbpermissaoEmissorCtePK pk,
			SituacaoCadastral cdSituacaoCadastral, String nmEmissor,
			String nsuCNE, String sincrozinadoAN, String situacaoBloqueio) {
		super();
		this.pk = pk;
		this.cdSituacaoCadastral = cdSituacaoCadastral;
		this.nmEmissor = nmEmissor;
		this.nsucne = nsuCNE;
		this.sincronizadoAn = sincrozinadoAN;
		this.situacaoBloqueio = situacaoBloqueio;
	}
	
	
	/***Construtor***/

	public TbpermissaoEmissorCtePK getPk() {
		return this.pk;
	}

	public void setPk(TbpermissaoEmissorCtePK pk) {
		this.pk = pk;
	}

	public SituacaoCadastral getCdSituacaoCadastral() {
		return this.cdSituacaoCadastral;
	}

	public void setCdSituacaoCadastral(SituacaoCadastral cdSituacaoCadastral) {
		this.cdSituacaoCadastral = cdSituacaoCadastral;
	}


	public String getNmEmissor() {
		return this.nmEmissor;
	}

	public void setNmEmissor(String nmEmissor) {
		this.nmEmissor = nmEmissor;
	}

	public String getSincronizadoAn() {
		return this.sincronizadoAn;
	}

	public void setSincronizadoAn(String sincronizadoAn) {
		this.sincronizadoAn = sincronizadoAn;
	}

	public String getSituacaoBloqueio() {
		return this.situacaoBloqueio;
	}

	public void setSituacaoBloqueio(String situacaoBloqueio) {
		this.situacaoBloqueio = situacaoBloqueio;
	}

	public String getNsucne() {
		return this.nsucne;
	}

	public void setNsucne(String nsucne) {
		this.nsucne = nsucne;
	}

	public Set<Tbinutilizacao> getTbinutilizacaoCollection() {
		return this.tbinutilizacaoCollection;
	}

	public void setTbinutilizacaoCollection(Set<Tbinutilizacao> tbinutilizacaoCollection) {
		this.tbinutilizacaoCollection = tbinutilizacaoCollection;
	}

	public Set<TbhistBloqueioRecfCte> getTbhistBloqueioRecfCteCollection() {
		return this.tbhistBloqueioRecfCteCollection;
	}

	public void setTbhistBloqueioRecfCteCollection(Set<TbhistBloqueioRecfCte> tbhistBloqueioRecfCteCollection) {
		this.tbhistBloqueioRecfCteCollection = tbhistBloqueioRecfCteCollection;
	}

	public Set<TbHistObrigatoriedadeCte> getTbhistObrigatoriedadeCteCollection() {
		return this.tbhistObrigatoriedadeCteCollection;
	}

	public void setTbhistObrigatoriedadeCteCollection(Set<TbHistObrigatoriedadeCte> tbhistObrigatoriedadeCteCollection) {
		this.tbhistObrigatoriedadeCteCollection = tbhistObrigatoriedadeCteCollection;
	}

	public Set<TbmodalEmissor> getTbmodalEmissors() {
		return tbmodalEmissors;
	}

	public void setTbmodalEmissors(Set<TbmodalEmissor> tbmodalEmissors) {
		this.tbmodalEmissors = tbmodalEmissors;
	}
}
@Entity
@Table(name="TBMODAL_EMISSOR")
public class TbmodalEmissor implements Serializable {
	private static final long serialVersionUID = 1L;

	@EmbeddedId
	private TbmodalEmissorPK pk;

	private String nsucne;

	@Column(name="SINCRONIZADO_AN")
	private String sincronizadoAn;

	//bi-directional many-to-one association to Tbmodal
    @ManyToOne
	@JoinColumn(name="CD_MODAL")
	private Tbmodal tbmodal;

	//bi-directional many-to-one association to TbpermissaoEmissorCte
    @ManyToOne
	@JoinColumns({
		@JoinColumn(name="IE", referencedColumnName="IE_EMISSOR"),
		@JoinColumn(name="CNPJ", referencedColumnName="CNPJ_EMISSOR"),
		})
	private TbpermissaoEmissorCte tbpermissaoEmissorCte;

    public TbmodalEmissor() {
    }

	public TbmodalEmissorPK getPk() {
		return pk;
	}

	public void setPk(TbmodalEmissorPK pk) {
		this.pk = pk;
	}
	
	public String getNsucne() {
		return this.nsucne;
	}

	public void setNsucne(String nsucne) {
		this.nsucne = nsucne;
	}

	public String getSincronizadoAn() {
		return this.sincronizadoAn;
	}

	public void setSincronizadoAn(String sincronizadoAn) {
		this.sincronizadoAn = sincronizadoAn;
	}

	public Tbmodal getTbmodal() {
		return this.tbmodal;
	}

	public void setTbmodal(Tbmodal tbmodal) {
		this.tbmodal = tbmodal;
	}
	
	public TbpermissaoEmissorCte getTbpermissaoEmissorCte() {
		return this.tbpermissaoEmissorCte;
	}

	public void setTbpermissaoEmissorCte(TbpermissaoEmissorCte tbpermissaoEmissorCte) {
		this.tbpermissaoEmissorCte = tbpermissaoEmissorCte;
	}
	
}
@Embeddable
public class TbmodalEmissorPK implements Serializable {
	// ------------------------------------- variaveis instancia ----------------------------------------------
	// default serial version id, required for serializable classes.
	private static final long serialVersionUID = 1L;

	@Column(name = "IE_EMISSOR")
	private String ieEmissor;

	@Column(name = "CNPJ_EMISSOR")
	private String cnpjEmissor;

	@Column(name = "CD_MODAL")
	private long cdModal;
	
	// ------------------------------------- construtores ----------------------------------------------
	public TbmodalEmissorPK(String ieEmissor, String cnpjEmissor, long codModal) {
		super();
		this.ieEmissor = ieEmissor;
		this.cnpjEmissor = cnpjEmissor;
		this.cdModal = codModal;
	}

	// ------------------------------------- metodos publicos -------------------------------------------
	public TbmodalEmissorPK() {
	}

	public String getIeEmissor() {
		return this.ieEmissor;
	}

	public void setIeEmissor(String ieEmissor) {
		this.ieEmissor = ieEmissor;
	}

	public String getCnpjEmissor() {
		return this.cnpjEmissor;
	}

	public void setCnpjEmissor(String cnpjEmissor) {
		this.cnpjEmissor = cnpjEmissor;
	}

	public long getCdModal() {
		return this.cdModal;
	}

	public void setCdModal(long cdModal) {
		this.cdModal = cdModal;
	}

	public boolean equals(Object other) {
		if (this == other) {
			return true;
		}
		if (!(other instanceof TbmodalEmissorPK)) {
			return false;
		}
		TbmodalEmissorPK castOther = (TbmodalEmissorPK) other;
		return this.ieEmissor.equals(castOther.ieEmissor)
				&& this.cnpjEmissor.equals(castOther.cnpjEmissor)
				&& (this.cdModal == castOther.cdModal);

	}

	public int hashCode() {
		final int prime = 31;
		int hash = 17;
		hash = hash * prime + this.ieEmissor.hashCode();
		hash = hash * prime + this.cnpjEmissor.hashCode();
		hash = hash * prime + ((int) (this.cdModal ^ (this.cdModal >>> 32)));

		return hash;
	}
}

porém, quando subo o jboss, ocorre o seguinte erro :

Alguem poderia me ajudar?

Att,

donatinho :shock:

coloque essa anotação nesse campo

@ManyToOne  
    @JoinColumn(name="CD_MODAL" insert="false" update="false")  
    private Tbmodal tbmodal;  

Como o dcorteztec falou, um dos atributos que contém a anotação da coluna CD_MODAL precisa ser marcado com insertable=false e updatable=false. Isso acontece por que na PK você já definiu esse atributo, e o Hibernate tentaria atualizá-lo em dois pontos. Não seria algo muito consistente.

Isso vai acontecer praticamente sempre que você precisar utilizar uma associação ManyToOne numa PK. Vc acaba usando só o código da FK na classe PK e depois bota a relação ManyToOne não atualizável na classe.