Chave primário composta com referência a outra chave primária composta

Olá, tenho as seguintes tabelas no banco de dados com chaves primárias compostas

tb_produto
- id (PK)
- descricao

tb_roteiro
- produto_id (PK - FK)
- codigo (PK)
- descricao

tb_operacao
- roteiro_produto_id (PK - FK)
- roteiro_id (PK - FK)
- codigo (PK)
- quant

Preciso criar as classes Java JPA e mapear os relacionamento
As tabelas “tb_produto” e “tb_roteiro” eu consegui fazer usando as anotações “Embeddable” e “Id” conforme código abaixo:

@Entity
@Table(name = "tb_produto")
public class Produto implements Serializable{

	private static final long serialVersionUID = 1L;
	
	@Id
	@Column(name = "id", nullable = false, length = 15)
	 private String id;
	@Column(name = "descricao", nullable = false, length = 80)
	private String descricao;}
@Embeddable
public class RoteiroPK implements Serializable {
	
	private static final long serialVersionUID = 1L;

	@ManyToOne
	@JoinColumn(name = "produto_id")
	private Produto produto;
	
	@Column(name = "codigo")
	private String codigo;
}
@Entity
@Table(name = "tb_roteiro")
public class Roteiro implements Serializable {

	private static final long serialVersionUID = 1L;
	
	@Id
	private RoteiroPK roteiroPK;
	
	@Column(name = "descricao", nullable = true, length = 30)
	private String descricao;
}

E isto esta funcionando perfeitamente, porém preciso implementar a classe “Operação” que possui como chave primária, a chave primária composta da tabela “tb_roteiro” + o seu próprio campo “codigo”, mas não sei como realizar esse mapeamento, no meu humilde entendimento, tentei declarar a classe “RoteiroPK” que é “Embeddable” na classe “OperacaoPK” que também é “Embeddable”, usando o “Embedded”, mas estou tendo problemas com o JPA que não inicializa e apresenta a seguinte mensagem de erro:

Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: br.com.baterax.bateraxmes.model.Operacao column: codigo (should be mapped with insert="false" update="false")

Segue abaixo a classes “OperacaoPK” que tenta representar o mapeamento da chave primária composta implementada pela Classe “RoteiroPK” e a classe “Operacao” que é a entidade da tabela “tb_operacao”:

@Embeddable
public class OperacaoPK implements Serializable {
	
	private static final long serialVersionUID = 1L;
	
	@Embedded
	private RoteiroPK roteiroPK;
	
	@Column(name = "codigo")
	private String codigo;
}
@Entity
@Table(name = "tb_operacao")
public class Operacao implements Serializable {

	private static final long serialVersionUID = 1L;
	
	@Id
	private OperacaoPK operacaoPK;

	private int quant;
}