Bom já tentei de tudo. Procurei um relacionamento parecido, até achei mas não gera tabela. Então não sei se tem alguma coisa errada ou se está tudo errado hehehe.
Vou postar o relacionamento e o resultado. Se alguém souber porque ele está gerando a coluna ITENS_ID com o valor do ID do Pedido eu agradeço muito.
Pedido.java
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(nullable=false)
private Set<ItemPedido> itens= new HashSet<ItemPedido>();
ItemPedido.java
@EmbeddedId
private ItemPedidoPK id;
@Column(nullable=false)
private Integer quantidade;
ItemPedidoPK.java
@ManyToOne(fetch=FetchType.LAZY) //Muitos Itens para um pedido...?!?
@JoinColumn(updatable=false,insertable=false)
public Pedido pedido;
@OneToOne(fetch=FetchType.LAZY) //Um produto para um item de produto...?!?
@JoinColumn(updatable=false,insertable=false)
public Produto produto;
Esta gerando a tabela ItemPedido dessa forma.
PKTABLE_NAME....PKCOLUMN_NAME.....FKTABLE_NAME.....FKCOLUMN_NAME....KEY_SEQ.
PEDIDO..........ID................ITEMPEDIDO.......PEDIDO_ID........1.
PEDIDO..........ID................ITEMPEDIDO.......ITENS_ID.........1.
PRODUTO.........ID................ITEMPEDIDO.......PRODUTO_ID.......1.
COLUMN_NAME....TYPE_NAME
QUANTIDADE.....INTEGER
PRODUTO_ID.....BIGINT
PEDIDO_ID......BIGINT
ITENS_ID.......BIGINT

E realmente o Netbeans mapeou Produto como ManyToOne. Não sei se é possivel persistir tudo de uma vez. Se for, talvez não role com chave composta.