Я борюсь почти неделю с того, как хранить HashMap, используя JPA в Play. Все остальные атрибуты сохранены, только HashMap имеет нулевые элементы (пуст).
public class ImageModel extends Model {
@Id
private String id;
private String url;
@ElementCollection(targetClass = java.lang.String.class)
@MapKeyClass(java.lang.String.class)
private Map<String,String> tags = new HashMap<>();
// the method for adding keys and values to the HashMap
public void add(String key, String value){
tags.put(key,value);
this.save();
}
}
Я также попытался аннотировать:
@ElementCollection(fetch=FetchType.LAZY)
Итак, до сих пор я догадываюсь, что я плохо настроил Play. (Я должен сказать, что я использую Play2 и ничего не настроил, кроме удаления "#" (метки комментариев) перед настройками базы данных).
В документации по игре говорится: " В Play 2.0 нет встроенной реализации JPA. Может быть, случай?
Обновление. Я провел некоторое исследование и сказал, что это может быть потому, что я использую базу данных по умолчанию из Play - H2. Я попытался с MySQL - видео, как это сделать, но опять же сохраняет только идентификатор и URL. Я посмотрел в базе данных MySQL, и таблица с именем класса имела только 2 атрибута (id и url), никаких следов моего HashMap.
Update2: добавлен экран печати - с запросом базы данных.
Update3: образец "computer-database-jpa" из Play работает нормально, поэтому JPA должен быть хорошим, но этот образец не использовал карту (HashMap). Я даже сменил спящий режим с EclipseLink, но все еще не работал.:( (хотя все базовые атрибуты типов находятся в базе данных)