请问Hibernate中用到的 saveOrUpdate() 使用方法
怎么设置才能让它根据ID在数据库中搜索一下,看ID如果存在就update,如果不存在就save.
unsaved-value="null" 肯定是不行的,因为我在执行方法前会给ID设一个值.
那应该设成什么呢?
水平比较低,望能说详细点儿,多谢:)
现在java版太乱啦,也不知道该在哪里发,版主手下留情
问题点数:40、回复次数:7Top
1 楼yxhzj(余华[学习J2EE中])回复于 2004-12-01 11:46:12 得分 0
看看Hibernate中文网吧,上面好象有资料
Top
2 楼x97(鲨鱼刺)回复于 2004-12-01 13:32:10 得分 0
我有参考手册,看不明白Top
3 楼totodo(土豆仙)回复于 2004-12-02 09:17:48 得分 0
load出来, 在save那自然是update
new 一个自然是save....
这个跟unsaved-value="null" 没有任何关系.
unsaved-value 只是在父子关系中才会用到. 顾名思意, 如果父中查出来的子值,与null比较,如果为避null 那么new ,如果不为null那么updateTop
4 楼cm4ever(小P[Fly Away])回复于 2004-12-02 09:28:46 得分 0
Object po = session.get(poClass, id);
if ( po == null )
{
po = poClass.newInstance();
// set properties...
session.insert(po);
}
else
{
// set properties
session.update(po);
}Top
5 楼Henu(守护进程)回复于 2004-12-07 11:46:25 得分 0
Cat po = (Cat)session.load(Cat.class, id)
if(po.getId == null) {
...
}Top
6 楼asp4567(无悔浪子)回复于 2005-01-22 10:16:43 得分 40
正好研究这个问题好几天了,
我来说说吧。
如果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:asp4567@hotmail.com 说的不对,大家多指教。
Top
7 楼raymanyoung()回复于 2005-01-28 20:12:30 得分 0
我不太明白为什么 id is assigned.
一般情况创建新数据不需要assign ID 吧。如果要改的话也不能改Id 啊。Top




