Groovy SQL + Gorm под тот же сеанс / транзакцию - PullRequest
0 голосов
/ 21 февраля 2011

Пожалуйста, пройдите простой сценарий ниже, я не смог найти лучший способ задать вопрос в текстовой форме:

Два объекта домена и транзакционный сервис:

A {
 int id
 String prop1
 B b
 static constraints = {b nullable:true}
}

B {
 int id
 String prop1
 // not worring about belongsTo here
}



SomeService {

 def transactional = true
 def sessionFactory

 def aTransactionalMethod() {
  Sql sql = new Sql(sessionFactory.currentSession.connection())

  sql# create A some how with sql query leaving property b as null.

 A a = A.findById(...)
 //a.b must be null here, never mind

 sql# create B object somehow with sql query.

 // should a.b be available now? I'm getting null here.. session.currentSession.refresh(a) resolves the issue but why is that?
 }
}

1 Ответ

0 голосов
/ 21 февраля 2011

Hibernate не может анализировать SQL, поэтому он не "знает", что вы пишете в базу данных.Hibernate не будет перезагружать все объекты сеанса - это определенно приведет к огромным накладным расходам.

Возможно, если вы переписываете свой запрос на HQL, объекты сразу же станут доступны для сеанса.

...