【发布时间】:2010-06-21 12:49:28
【问题描述】:
当我使用 Hibernate 的 saveOrUpdate(Object) 方法时。我怎么知道该行已更新或新行添加到表中???方法saveOrUpdate(Object)的返回类型为void,调用该方法后查不到结果。
请帮助我。
【问题讨论】:
标签: nhibernate
当我使用 Hibernate 的 saveOrUpdate(Object) 方法时。我怎么知道该行已更新或新行添加到表中???方法saveOrUpdate(Object)的返回类型为void,调用该方法后查不到结果。
请帮助我。
【问题讨论】:
标签: nhibernate
据我所知,从您的问题和评论中得知。您可以创建一个事件监听器并实现两个接口:IPreUpdateEventListener、IPreInsertEventListener
e.q.
public class AuditEventListener : IPreUpdateEventListener, IPreInsertEventListener
{
public bool OnPreUpdate(PreUpdateEvent @event)
{
//your stuff here
return false;
}
public bool OnPreInsert(PreInsertEvent @event)
{
//your stuff here
return false;
}
}
但我认为这很荒谬。使用 ORM 意味着您不关心持久性,所有工作都由工作单元完成。如果你真的需要插入和更新,只需使用 Save() 或 Update() 方法,这样你就可以准确地知道做了什么操作。
【讨论】:
如果您要持久化的对象的标识符属性设置为 0(/id null),则表示它是一个新对象,将新插入到 db 中。 插入后,休眠将在标识符字段中设置 id 值。 如果该对象已经设置了标识符属性,则表示该对象已经持久化并且可以更新
编辑:你看过休眠拦截器吗?可能这很有用。 example
【讨论】: