We're updating the issue view to help you get more done. 

MappingException when @MapKeyColumn refers to a column mapped in embeddable map value

Description

Map<Basic, Embeddable> does not work, when the map key is a persistent field of the value. The map key shall not be represented as a separate table column, this is why the example uses @MapKey and not @MapKeyColumn.

Example:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 @Embeddable public class LocalizedString { private String language; private String text; } @Entity public class MultilingualString { @Id private long id; @ElementCollection(fetch=FetchType.EAGER) @MapKey(name = "language") @CollectionTable(schema = "jpa", name = "multilingual_string_map", joinColumns = @JoinColumn(name = "string_id")) private Map<String, LocalizedString> map = new HashMap<String, LocalizedString>(); }

Hibernate appears to expect an Entity as map value:

org.hibernate.AnnotationException: Associated class not found: LocalizedString

Detailed discussion of this use case:
http://hwellmann.blogspot.com/2010/07/jpa-20-mapping-map.html

Environment

Hibernate 3.5.3, PostgreSQL 8.4.3

Status

Assignee

Gail Badner

Reporter

Harald Wellmann

Fix versions

Labels

backPortable

None

Suitable for new contributors

None

Requires Release Note

None

Pull Request

None

backportDecision

None

Components

Affects versions

4.3.6
3.5.3
5.0.9

Priority

Major