2010-05-25 133 views
1

时更新数据库列函数调用我有一个域类,当坚持到Oracle必须更新一列SYSDATE。 NHibernate只能生成1个SQL。例如NHibernate的,坚持一个域对象

更新人组年龄= 12,邮票= SYSDATE其中id = 1;

可以这样做吗?

编辑:

可能是这样的:

Person person = (Person)session.Get(typeof(Person), 1); 
session.SetFunction(person, "stamp", Functions.CurrentTimestamp); 
person.Age = 12; 
session.Flush(); 

回答

0

你可以通过下列方式更新数据库触发器邮票:

create trigger person_trg 
before update 
for each row 
begin 
    :new.stamp := sysdate; 
end; 

然后所有的Hibernate需要做的就是 “坚持”年龄的变化(例如)。

+0

谢谢,但我不能使用此解决方案。我想控制何时从代码分配标记。 – Wyass 2010-05-25 13:21:04

0

如果你想这样做点播,你可以执行上面的查询:

session.CreateQuery("update person set age = 12, stamp = sysdate where id = 1") 
     .ExecuteUpdate(); 

有趣的是,既有效的HQL和SQL。

+0

这也是可能的,但我rellay不想使用sql/hql – Wyass 2010-05-25 13:59:45