2010-05-25 63 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