@Target(value={METHOD,FIELD})
 @Retention(value=RUNTIME)
public @interface MapKeyClass
java.util.Map型の関連付けのマップキーの型を指定します。
 
 マップキーは基本型や組み込みクラス、もしくはエンティティにすることができます。
 マップがJavaジェネリクスを使用して指定されている場合は、MapKeyClassアノテーションおよび関連型を指定する必要はありません。
 それ以外の場合は指定する必要があります。
 
 MapKeyClassアノテーションはElementCollectionやコレクション値のリレーションシップのアノテーション(OneToManyまたはManyToMany)
 と共に使用されます。
 MapKeyアノテーションとMapKeyClassアノテーションは同時に使われることはありません。
 
    Example 1:
    @Entity
    public class Item {
       @Id int id;
       ...
       @ElementCollection(targetClass=String.class)
       @MapKeyClass(String.class)
       Map images;  // imageの名前からimageのファイル名へのmap
       ...
    }
    Example 2:
    // MapKeyClassとリレーションシップのターゲット型がデフォルトにできる場合
    @Entity
    public class Item {
       @Id int id;
       ...
       @ElementCollection
       Map<String, String> images; 
        ...
     }
     Example 3:
     @Entity
     public class Company {
        @Id int id;
        ...
        @OneToMany(targetEntity=com.example.VicePresident.class)
        @MapKeyClass(com.example.Division.class)
        Map organization;
     }
     Example 4:
     // MapKeyClassとリレーションシップのターゲット型がデフォルトにできる場合
     @Entity
     public class Company {
        @Id int id;
        ...
        @OneToMany
        Map<Division, VicePresident> organization;
     }
 ElementCollection, 
OneToMany, 
ManyToMany| 修飾子とタイプ | 必須要素と説明 | 
|---|---|
| java.lang.Class | value(必須) マップキーの型 | 
Translated by @megascus.