1
如何確定域類實例是否持久,即從數據庫加載?我正在尋找一個屬性/方法,將返回false
此對象確定域對象是否持久
def book = new Book(name: 'foo')
但將返回true
此對象
def book = Book.findByName('foo')
爲truthy id
財產可靠,例如檢查
boolean isPersistent = book.id
如何確定域類實例是否持久,即從數據庫加載?我正在尋找一個屬性/方法,將返回false
此對象確定域對象是否持久
def book = new Book(name: 'foo')
但將返回true
此對象
def book = Book.findByName('foo')
爲truthy id
財產可靠,例如檢查
boolean isPersistent = book.id
使用isAttached
方法或其attached
物業形態:
def book = new Book(name: 'foo')
assert !book.attached
book.save(flush: true)
Book.withSession { it.clear() }
book = Book.findByName('foo')
assert book.attached
如果不使用分配的標識,檢查該實例有一個非空id
工作,但並不總是將會是正確的,因爲您始終可以爲非持久性實例的id屬性分配一個長整型值(它將在保存時更新)。
請注意,使用isAttached
將會失敗,因爲持久實例與休眠會話分離 - 如果兩者都是持久性(即從數據庫數據實例化)並且當前與會話相關聯,則它們將僅爲true
。