session.save(Object a)与session.save(String s,Object o)的详解就要是想了解session.save(String s,Object o) 参数的作用,如果能解决下面的问题也行:Class abstract A{} ;
Class B extends A {
private String name ;
//get set 方法就省略不写了
}现在就是想在无法声明的情况下,
能过A类,把B实例写到数据库中去。A a = Class.forName("B").newInstance() ;
参数写的方法就省了,
Class B extends A {
private String name ;
//get set 方法就省略不写了
}现在就是想在无法声明的情况下,
能过A类,把B实例写到数据库中去。A a = Class.forName("B").newInstance() ;
参数写的方法就省了,
解决方案 »
- Spring getJdbcTemplate().query 访问数据库 没有返回
- 为什么他们的输出结果是before==strArry[0]=Hello strarry[1]=Word after==strArry[0]=Word str
- 怎么用js或者用jquery实现两个图片之间互相拖拽
- java.io.IOException: 拒绝访问 该怎么解决?
- spring1.2 配hibernate 报错
- 安装pet store问题
- 请问一个web.xml问题?
- <logic:iterate ><bean:write >应用时遇到困难 !!!在线等!!!!!!!!!!!!
- 拿什么来拯救你---我的多条记录?之 分页查询 篇!
- jbuilder初学者的一些问题,我们迷糊
- memcached client for java客户端
- hibernate merge和saveOrUpdate
不过你的那个情况,直接
save(A)就OK了
在里面是update(String s,Object obj)的解释..跟save同理呵..其实不用我们用都只用那个单一参数的
但是有2个参数的版本也是有意义的。它的完整声明是这样的。
public void update(String entityName, Object object) throws HibernateException;
hibernate在探索不使用pojo类或javabean进行O/R Mapping,可选的方式有 动态模型(Dynamic models),和 XML映射。两种方式都可以不写持久化类的。前者使用Map套Map来表示数据,后者使用解析过的XML树。
<hibernate-mapping>的<class>节点有个可选属性是entity-name,默认是类名。普通的用pojo类映射时,它是没什么用的。但是在上述两种情况下,就要使用它了(配置文件的其他区别不赘述)。在你持久化操作这样的映射时,所使用的Session的EntityMode不能再是默认的POJO,而是MAP或XML。调用Session的持久化方法也必须指定entityName,因为你要持久化的对象已经不能以自身的信息(object.getClass())来表示映射的对象。你可以发现不只是update,其他一系列的方法,像get load save saveOrUpdate merge persist等等都提供了带entityName的版本。
我不清楚hibernate最新版本对这种映射的支持,但至少在3.0版本时,这些特性还处于实验阶段,不建议使用。说了这么多,其实一句话。无视它们就好了。
顺带再说一句,你调用的单参数的update方法,内部调用了2个参数的方法,entityName传了null。get load save 等方法也是这样做的。