@ElementCollection com Map <Entity, Embeddable> onde Entity é um campo do Embeddable

Depois de pesquisar nos documentos do JPA e em várias postagens, estou confuso sobre se o seguinte é possível com o JPA2.0. Eu estou apenas começando com o JPA, então me desculpe se estou fazendo algo estúpido,

Meu modelo de domínio tem um "Portfólio", que contém zero ou mais "posições abertas". Uma posição consiste em um "Instrumento" (que é uma Entidade JPA) e um preço (double). O portfólio é o seguinte:

@Entity (name = "portfolio")
public class Portfolio {
    @Id
    @Column (name = "id")
    @GeneratedValue
    private long id;

    @ElementCollection (fetch = FetchType.EAGER)
    @CollectionTable (name = "portfolio_entry", joinColumns = @JoinColumn (name = "portfolio_id"))
    private final Map<Instrument, OpenPosition> positions = new HashMap<Instrument, OpenPosition>();
....

O OpenPosition Embeddable é o seguinte:

@Embeddable
public class OpenPosition extends Position {
    @ManyToOne (targetEntity = InstrumentImpl.class, optional = false)
    @JoinColumn (name = "instrument_id", nullable = false)
    protected Instrument instrument;

    @Column (name = "price", nullable = false)
    protected double price;
....

e a entidade Instrumento é:

@Entity (name="instrument")
public class Instrument {
    @Id
    @Column(name = "id")
    @GeneratedValue
    private long id;

    @Column(name = "isin", nullable = false)
    private String isin;
....    
    @Override 
    public int hashCode() {
        int hash = 17;
        hash = 31 * hash + isin.hashCode();
    ....

Quando tento usar isso, o esquema é criado e eu posso persistir nos portfólios, mas ao tentar recuperá-los, recebo um NullPointerException no método hashCode da classe Instrument. Parece que o JPA está tentando obter o código hash para construir a chave Map, mas o objeto Instrument não foi carregado.

Eu posso ver através da depuração que, embora o id seja definido no objeto Instrument, todos os outros campos são nulos.

Então, minha pergunta é: o JPA2.0 permite um ElementCollection em que a chave é uma entidade que também está presente como um campo do valor Embeddable? Se sim, o que estou estragando? E se não, a melhor solução é usar o id da entidade Instrumento como chave?

Desde já, obrigado.

p.s. Estou usando a implementação do Hibernate 4.1.4 JPA.

questionAnswers(1)

yourAnswerToTheQuestion