休眠,从Map保存数据

时间:2010-11-12 10:24:08

标签: java hibernate

我想从Map(如HashMap)动态保存hibernate上的数据。

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

session.save(entityname, myMap);

我的HashMap有以下信息: {videoResolution = 921600}

但我得到以下错误:

org.hibernate.MappingException: Unknown entity: table1

我的Hibernate配置文件配置为default-entity-mode:

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

你可以帮帮我吗?

我已经成立:

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

将地图保存到db vai Hibernate,但我总是得到同样的错误......

谢谢:)

2 个答案:

答案 0 :(得分:2)

嗯,Hibernate是一个对象关系映射框架。因此,您需要一个Object(包含要保留的数据)和一个Mapping(用于描述如何将对象的属性放入某些数据库表中以使用它)。

没有办法避免这个基本要求,就像你无论你想要多少都没有Main类就无法运行Java应用程序。

Hibernate documentation非常全面,因此我建议您查看Getting Started指南并进行操作。您还会注意到API session.save要求参数的持久性类(即具有已知映射的类),{{1}不太可能出现这种情况。 }。

答案 1 :(得分:0)

没有对象或映射的Hibernate?我会说你不想要Hibernate - 试试iBatis或直接的JDBC。什么是Hibernate在这里买你? 没有

如果你想要存储在表中的(键,值)对Map,请按以下方式执行:

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中实现此接口。它允许您使用带有后备数据存储的Java Map执行CRUD操作。