Hibernate, сохранить данные с карты - PullRequest
2 голосов
/ 12 ноября 2010

Я хочу динамически сохранять данные в спящем режиме с карты (например, HashMap).

String entityname = "table1";
Map<String,Object> myMap;

session.save(entityname, myMap);

В моей хэш-карте есть такая информация: {videoResolution = 921600}

, но я получаюошибка:

org.hibernate.MappingException: Unknown entity: table1

Мой конфигурационный файл Hibernate настроен по умолчанию для режима объекта:

    <property name="default_entity_mode">dynamic-map</property>

Можете ли вы мне помочь?

Я нашел:

Session session = HibernateUtil.getSessionFactory().openSession(); 
Session ds = session.getSession(EntityMode.MAP); 

чтобы сохранить карту в db vai Hibernate, но я получаю всегда одну и ту же ошибку ...

Спасибо :))

Ответы [ 2 ]

2 голосов
/ 12 ноября 2010

Erm, Hibernate является структурой объектно-реляционного отображения.Следовательно, вам нужен и объект (содержащий данные для сохранения) и отображение (чтобы описать, как атрибуты объекта должны быть помещены в определенные таблицы базы данных для его использования).

Нет способа избежать этого фундаментальноготребования, так же, как вы не можете запустить приложение Java без класса Main независимо от того, сколько вы захотите.

Документация Hibernate очень всеобъемлющая, поэтому я рекомендую взглянуть на Getting Started руководство и следуйте ему.В API вы также заметите, что для session.save требуется постоянный класс для аргумента (т. Е. Класса с известным отображением), что вряд ли имеет место для java.util.Map.

0 голосов
/ 12 ноября 2010

Спящий без объектов или карт? Я бы сказал, что вы не хотите Hibernate - попробуйте iBatis или прямой JDBC. Что Hibernate покупает тебя здесь? Ничего .

Если у вас есть Карта пар (ключ, значение), которые вы хотите сохранить в таблице, сделайте это следующим образом:

public interface TableMapper<K extends Serializable, V>
{
   Map<K, V> find();
   V find(K key);
   void save(Map<K, V> m);
   void update(Map<K, V> m);
   void delete(K key);
}

Реализуйте этот интерфейс в Hibernate или iBatis или JDBC или JDO или JPA. Это позволит вам выполнять CRUD-операции с использованием карты Java с хранилищем резервных данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...