Различие экземпляров grails / GORM между доменом, полученным с помощью get vs read - PullRequest
0 голосов
/ 18 октября 2018

Я знаю функциональную разницу между DomainClass.get () и DomainClass.read ().«Чтение» останавливает спящий режим при автоматическом сохранении экземпляров при сбросе сеанса при изменении свойств.

Но я не могу найти разницу между двумя возвращенными экземплярами, которые изменяют поведение.

Grailsдает экземплярам домена свойство "instanceGormInstanceApi", которое, я полагаю, должно содержать ответ, но до сих пор я не смог выяснить разницу в этом объекте.

1 Ответ

0 голосов
/ 18 октября 2018

После дальнейшего изучения поведение только для чтения подключается к сеансу, в котором находится экземпляр.

Это эквивалентно тому, что делает объект «прочитанным»:

DomainClass.withSession{session->
    session.setReadOnly(myInstance,true)
    session.setFlushMode(FlushMode.MANUAL)//this isn't always necessary?
}

см.Метод исходного кода setObjectToReadOnly в GrailsHibernateUtils на https://github.com/grails/gorm-hibernate5/blob/master/grails-datastore-gorm-hibernate5/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsHibernateUtil.java

К сожалению, ограничения «чтения» не влияют на отношения.Поэтому, если вы сделаете родительский объект прочитанным, дочерние объекты все равно будут автоматически сохранены и будут обрабатываться независимо.Из Грааля документы ...

 There is one exception to this though - any associated collections, for 
 example an Author's books collection, will participate in automatic 
 flushing and dirty detection. 
...