看看Hibernate中文网吧,上面好象有资料

解决方案 »

  1.   

    load出来, 在save那自然是update
    new 一个自然是save....这个跟unsaved-value="null" 没有任何关系.unsaved-value 只是在父子关系中才会用到. 顾名思意, 如果父中查出来的子值,与null比较,如果为避null 那么new ,如果不为null那么update
      

  2.   

    Object po = session.get(poClass, id);if ( po == null )
    {
        po = poClass.newInstance();
        // set properties...
        session.insert(po);
    }
    else
    {
        // set properties
        session.update(po);
    }
      

  3.   

    Cat po = (Cat)session.load(Cat.class, id)
    if(po.getId == null) {
      ...
    }
      

  4.   

    正好研究这个问题好几天了,
    我来说说吧。
    如果id是assigned那么,你的unsaved-value,设任何值都没有效果,结果就是要么总是发送save,要么总是发送update.如果id是采用其它的生成方式,unsaved-value一般可以设为null那么怎么样才能在id是assigned的情况下。使用saveorupdate呢?
    有两种解决办法。这里只说其中一种,被我证明是可行的。(另外的方法没试过)
    就是给数据库增加一个version的字段。然后在映射文件中制订 version的属性。并设定其unsaved-value=null
    看下面的:
    <version name="logVersion"
                     column="LOG_VERSION"
                     type="java.lang.Integer"
                     unsaved-value="null"/>如果还有要深究的,msn:[email protected] 说的不对,大家多指教。
      

  5.   

    我不太明白为什么 id is assigned.
    一般情况创建新数据不需要assign ID 吧。如果要改的话也不能改Id 啊。