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() ;
参数写的方法就省了,

解决方案 »

  1.   

    不知道save(String s,Object o)什么意思,
    不过你的那个情况,直接
    save(A)就OK了
      

  2.   

    http://topic.csdn.net/u/20090420/20/56f2aa66-cc48-4419-9eac-7c55194c4a83.html
    在里面是update(String s,Object obj)的解释..跟save同理呵..其实不用我们用都只用那个单一参数的
      

  3.   

    刚学完SSH,距离楼主还有一定差距~~~
      

  4.   

    把下面这段话的 uodate换成save即可正常情况下,update方法只用一个参数的就可以了。
    但是有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 等方法也是这样做的。
      

  5.   

    你把SQL打印出来 跟着看看就知道了 HIBERNATE底层的东西