@ElementCollection с картой <Entity, Embeddable>, где Entity является полем Embeddable

После поиска в документах JPA и различных публикациях я не понимаю, возможно ли следующее с JPA2.0. Я только начинаю с JPA, так что извините, если я делаю что-то глупое,

Моя модель домена имеет «Портфолио», в котором содержится ноль или более «открытых позиций». Позиция состоит из «инструмента»; (который является субъектом JPA) и цена (в два раза). Портфель выглядит следующим образом:

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

Встраиваемость OpenPosition выглядит следующим образом:

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

и сущность Instrument является:

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

Когда я пытаюсь использовать это, создается схема, и я могу сохранить портфели, но при попытке их получить я получаю исключение NullPointerException в методе hashCode класса Instrument. Похоже, JPA пытается получить хеш-код для построения ключа Map, но объект Instrument не был загружен.

Через отладку я вижу, что хотя id установлен в объекте Instrument, все остальные поля имеют значение null.

Поэтому мой вопрос: разрешает ли JPA2.0 ElementCollection, где ключом является сущность, которая также присутствует в качестве поля значения Embeddable? Если так, то что я облажался. И если нет, то является ли лучшим обходным решением использование идентификатора сущности Instrument в качестве ключа?

Заранее спасибо.

постскриптум Я использую реализацию JPA hibernate 4.1.4.

Ответы на вопрос(1)

Ваш ответ на вопрос