Я работаю над созданием JPA 2.0 Annotation compliancy kit для своей стажировки. Сейчас меня интересует, когда аннотация @MapKeyTemporal является обязательной, а когда необязательной....
Я знаю, что когда вы определяете столбец ключа карты с помощью @MapKeyColumn, тип, с которым должен быть сопоставлен ключ, может быть получен путем просмотра типа столбца (и иначе типа в определении столбца). Таким образом, в этом случае аннотация @MapKeyTemporal не нужна.
Когда вы подключаете аннотацию @MapKeyTemporal, имя колонки по умолчанию принимает значение ATTRIBUTE + "_KEY".
Когда вы не аннотируете @MapKeyColumn и @MapKeyTemporal, имя столбца по умолчанию принимает значение ATTRIBUTE + "_KEY", но к какому типу по умолчанию относится ключ? Или вы должны получить ошибку?
Я искал похожую ситуацию и нашел @MapKeyEnumerated.
Это то же самое, потому что оно связано с @MapKeyColumn и это значение, которое может быть сопоставлено с несколькими типами данных (java.sql.Date/java.sql.Time/java. sql.Timestamp
для @MapKeyTemporal, и EnumeratedType.ORDINAL
/EnumeratedType.STRING
для @MapKeyEnumerated).
Я нашел одно отличие:
@MapKeyEnumerated имеет значение по умолчанию. Это значение по умолчанию - EnumeratedType.ORDINAL
.
Мой вопрос: При использовании карты, имеющей ключ карты, базовый тип которого является временным типом, каков TemporalType по умолчанию (согласно JPA 2.0), в который преобразуется ключ карты для сохранения?