Зима лінива власність з проекціями

Якщо у вас є MyClass з багатьма властивостями.

Якщо ви хочете лінуватися одержати одну властивість за допомогою @Basic (fetch = lazy) , то вам потрібно пристосувати свій клас правильно?

але

what if you do a projection over your bean and then do a ResultTransformer(TransFormers.aliasToBean(MyClass.class))

Щось на зразок цього:

 /*.get(Usuario.class, 1); this gets the wholeobject with out @Basic(fetch=lazy)*/
     Usuario usuario = (Usuario) session 
    .createCriteria(Usuario.class)
    .add(Restrictions.eq("id", 1))
    .setProjection(Projections.projectionList()
    .add(Projections.property("id").as("id")))
           .setResultTransformer(Transformers.aliasToBean(Usuario.class))
    .uniqueResult();

Це робить трюк. Ви отримали лише ідентифікатор, а не весь об'єкт.

Моє питання є. Цей об'єкт Usuario в кеші запитів однаковий і кеш так, ніби я отримую його за допомогою .get() ?

Зображення ви отримали інший об'єкт, і вам потрібно встановити зв'язок з usuario.

  //projected Usuario object
   AnotherObject.setUsuario(usuario);
  //this works okay, але its correct?

Дякую.

1
Щоб зберегти відносини працює як нормально, але тоді, якщо ви хочете отримати ще одну властивість, яка є асоціацією з використанням Usuario, як: usuario.getOtherObject (), це не може бути зроблено, сплячий режим завантажується з бази даних. Щоб вирішити цю проблему, потрібно включити асоційований об'єкт у проекцію.
додано Автор ics_mauricio, джерело

Відповідей немає

0