2010-03-16 4 views

Répondre

1

Ce n'est pas une jolie solution mais cela fonctionne. Utilisez la propriété de formule.

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

Lieu ce domaine dans une sorte d'entité factice et vous serez en mesure de tirer la date de votre base de données SQL et à partir de là, vous pouvez l'assigner à votre colonne last_update.

J'ai fait pas mal de recherches et je n'ai pas trouvé un moyen plus simple de le faire.

+0

Merci pour votre réponse , cela signifie-t-il que je ne peux pas avoir ServerDate comme l'une des propriétés de l'objet à enregistrer et que je dois utiliser ité? – Vishal

+0

Vous pouvez mais vous devrez toujours l'assigner. J'ai seulement recommandé l'entité fictive car il pourrait être trompeur d'avoir ce champ en tant que propriété d'une entité réelle. –

+0

Ok, je suis nouveau à Hibernate Dois-je créer un fichier de configuration pour cette entité fictive? Comment puis-je obtenir ServerDate et l'assigner plus tard au champ last_update? – Vishal

0

Vous pouvez créer une nouvelle 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); 
    } 
} 

et l'enregistrer dans votre configuration comme ceci:

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

je HQL et cela a fonctionné

entity.setLastUpdate((Date) session.createSQLQuery(
     "select getdate()").list().get(0)) 
Questions connexes