Hibernate懒惰属性与投影

时间:2011-10-27 22:48:58

标签: hibernate nhibernate-projections

如果你的bean MyClass有很多属性。

如果你想懒惰地获得一个@Basic( fetch=lazy)的房产,你需要为你的班级做好准备吗?

如果您对bean进行投影,然后执行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();

这就是诀窍。你只得到了ID,而不是整个对象。

我的问题是。 Usuario的此对象在查询缓存中是相同的,并且缓存就像我使用.get()获取它一样?

你有另一个对象的图像,你需要与usuario建立关系。

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

谢谢。

0 个答案:

没有答案