JPA com chave composta

Fala galera do Guj… blz!!!
Então pessoal estou com um problema quando vou usar uma chave composta no JPA que gera o seguinte erro:

Alguém já passou por isso
Valeu pessoal.

Que eu saiba para criar uma chave composta você precisa de um novo objeto representando essa chave, você tá fazendo isso?

Sim
Aqui vai o código:

package com.br.exemploentity;

import java.io.Serializable;
import java.math.BigDecimal;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

@Entity
public class Itemnotafiscal implements Serializable {
	@EmbeddedId
	private ItemnotafiscalPK pk;

	private String descricao;

	private BigDecimal vlrunitario;

	private BigDecimal vlrtotal;

	private int quantidade;

	private BigDecimal vlrdesconto;

	@ManyToOne
	@JoinColumn(name="idnotafiscal")
	private Notafiscal idnotafiscal;

	private static final long serialVersionUID = 1L;

	public Itemnotafiscal() {
		super();
	}

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

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

	public String getDescricao() {
		return this.descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public BigDecimal getVlrunitario() {
		return this.vlrunitario;
	}

	public void setVlrunitario(BigDecimal vlrunitario) {
		this.vlrunitario = vlrunitario;
	}

	public BigDecimal getVlrtotal() {
		return this.vlrtotal;
	}

	public void setVlrtotal(BigDecimal vlrtotal) {
		this.vlrtotal = vlrtotal;
	}

	public int getQuantidade() {
		return this.quantidade;
	}

	public void setQuantidade(int quantidade) {
		this.quantidade = quantidade;
	}

	public BigDecimal getVlrdesconto() {
		return this.vlrdesconto;
	}

	public void setVlrdesconto(BigDecimal vlrdesconto) {
		this.vlrdesconto = vlrdesconto;
	}

	public Notafiscal getIdnotafiscal() {
		return this.idnotafiscal;
	}

	public void setIdnotafiscal(Notafiscal idnotafiscal) {
		this.idnotafiscal = idnotafiscal;
	}

}
package com.br.exemploentity;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Embeddable;

@Embeddable
public class ItemnotafiscalPK implements Serializable {
	@Column(name="idnotafiscal", insertable=false, updatable=false)
	private int idnotafiscal2;

	private int iditemnotafiscal;

	private static final long serialVersionUID = 1L;

	public ItemnotafiscalPK() {
		super();
	}

	public int getIdnotafiscal2() {
		return this.idnotafiscal2;
	}

	public void setIdnotafiscal2(int idnotafiscal2) {
		this.idnotafiscal2 = idnotafiscal2;
	}

	public int getIditemnotafiscal() {
		return this.iditemnotafiscal;
	}

	public void setIditemnotafiscal(int iditemnotafiscal) {
		this.iditemnotafiscal = iditemnotafiscal;
	}

	@Override
	public boolean equals(Object o) {
		if (o == this) {
			return true;
		}
		if ( ! (o instanceof ItemnotafiscalPK)) {
			return false;
		}
		ItemnotafiscalPK other = (ItemnotafiscalPK) o;
		return (this.iditemnotafiscal == other.iditemnotafiscal)
			&& (this.idnotafiscal2 == other.idnotafiscal2);
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int hash = 17;
		hash = hash * prime + this.iditemnotafiscal;
		hash = hash * prime + this.idnotafiscal2;
		return hash;
	}

}

O que será que está faltando!?!?
Valeu pessoal

não seria este id notafiscal 2.

você também poderia embutir na classe no relacionamento utilizando @Column, apesar de não ser uma boa prática.

Então…
Já alterei… e tb fiz o Eclipse gerar as classes e mesmo assim não funcionou…

você fez o que ele pediu

a sua chave primária não poderá ser modificada, ou ela será criada ou removida. siga a recomendação do erro. acredito que funcione!