2010-03-16 19 views

回答

1

這不是一個漂亮的解決方案,但它的工作原理。使用公式屬性。

<property name='ServerDate' formula='getdate()'/> 

放置在某種虛擬實體的那場,你就可以從你的SQL數據庫,並從那裏你可以把它分配給您的last_update列拉的日期。

我已經做了相當多的搜索,我還沒有找到一個更簡單的方法來做到這一點。

+0

謝謝您的回答,這是否意味着我不能將ServerDate作爲保存對象的屬性之一,並且必須使用虛擬ent性? – Vishal 2010-03-16 17:00:43

+0

你可以但你仍然必須分配它。我只推薦虛擬實體,因爲將該字段作爲真實實體的屬性可能會產生誤導。 – 2010-03-16 17:27:25

+0

好吧,我是新來的冬眠,我必須爲該虛擬實體創建配置文件?我如何獲取ServerDate並稍後將其分配回last_update字段? – Vishal 2010-03-16 18:14:58

0

您可以創建一個新的SaveOrUpdateEventListener:

public class DateTimeSaveOrUpdateEventListener : DefaultSaveOrUpdateEventListener 
{ 
    protected override object EntityIsPersistent(SaveOrUpdateEvent @event) 
    { 
     MyEntity ent = @event.Entity as MyEntity; 
     if(ent != null) 
      ent.LastUpdate = DateTime.Now; 
     return base.EntityIsPersistent(@event); 
    } 

    protected override object EntityIsTransient(SaveOrUpdateEvent @event) 
    { 
     MyEntity ent = @event.Entity as MyEntity; 
     if(ent != null) 
      ent.LastUpdate = DateTime.Now; 
     return base.EntityIsTransient(@event); 
    } 
} 

,並在您的配置是這樣註冊它:

var listener = new DateTimeSaveOrUpdateEventListener(); 
config.SetListener(NHibernate.Event.ListenerType.SaveUpdate, listener); 
config.SetListener(NHibernate.Event.ListenerType.Save, listener); 
0

我用HQL和它的工作

entity.setLastUpdate((Date) session.createSQLQuery(
     "select getdate()").list().get(0)) 
相關問題