After searching through the JPA docs and various posts, I\'m confused as to whether the following is possible with JPA2.0. I\'m just starting out with JPA so excuse me if I\
So my question is, does JPA2.0 allow an ElementCollection where the key is an Entity that is also present as a field of the Embeddable value?
Yes, i managed to do it with this mapping:
@ElementCollection( targetClass = FreightBid.class )
@MapKeyJoinColumn( name = "carrier_id", referencedColumnName = "id" )
@CollectionTable( name = "freight_bid",
joinColumns = @JoinColumn( name = "offer_pool_id" ) )
@Access( AccessType.FIELD )
private Map<Carrier,FreightBid> bidsByCarrier;
In my case, Carrier is an @Entity
and FreightBid is an @Embedded
I've been able to persist and retrieve the Entity that contains this map correctly.
what am I screwing up.
You should remove the field protected Instrument instrument;
from OpenPosition
class and instead use the annotation @MapKeyJoinColumn
on the map field in Portfolio class to declare wich column should be used as join column to the map key.
Also it would be best to avoid using other fields than id in the hashCode method of an object wich act as a map key... you JPA implementor might screw things up.