@ElementCollection with Map <Entity, Embeddable> donde Entity es un campo de Embeddable

Después de buscar en los documentos de JPA y en varias publicaciones, estoy confundido en cuanto a si lo siguiente es posible con JPA2.0. Estoy empezando con JPA, así que discúlpeme si estoy haciendo algo estúpido.

Mi modelo de dominio tiene un "Portafolio", que contiene cero o más "posiciones abiertas". Una posición consiste en un "Instrumento" (que es una Entidad JPA) y un precio (doble). La cartera es la siguiente:

@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>();
....

El OpenPosition Embeddable es el siguiente:

@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;
....

y la entidad del instrumento es:

@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();
    ....

Cuando trato de usar esto, se crea el esquema y puedo conservar las carteras, pero al intentar recuperarlas, obtengo una excepción NullPointerException en el método hashCode de la clase Instrument. Parece que JPA está intentando obtener el código hash para construir la clave del mapa, pero el objeto del instrumento no se ha cargado.

Puedo ver a través de la depuración que aunque la identificación está establecida en el objeto Instrumento, todos los demás campos son nulos.

Entonces, mi pregunta es, ¿permite JPA2.0 una Colección de elementos donde la clave es una Entidad que también está presente como un campo del valor de Incrustación? Si es así, ¿qué estoy jodiendo? Y si no, ¿es la mejor solución para usar el id de la entidad del instrumento como la clave?

Gracias por adelantado.

PD. Estoy usando la implementación de hibernate 4.1.4 JPA.

Respuestas a la pregunta(1)

Su respuesta a la pregunta