我想在我的表的 last_update 列中添加db server的时间戳。如何在休眠中实现这一点?
谢谢
答案 0 :(得分:1)
这不是一个很好的解决方案,但它确实有效。使用公式属性。
<property name='ServerDate' formula='getdate()'/>
将该字段放在某种虚拟实体中,您就可以从SQL数据库中提取日期,然后从那里将其分配到last_update
列。
我已经做了很多搜索,但我找不到更简单的方法。
答案 1 :(得分: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);
答案 2 :(得分:0)
我使用了HQL并且工作正常
entity.setLastUpdate((Date) session.createSQLQuery(
"select getdate()").list().get(0))