我现在遇到一个问题 ssh框架中 使用Spring的dao模块的hibernatedaosupport的模板类(getHibernateTemplate.get(User.class,id))对数据进行查询,,数据库中 有一个user表(int id ,String name)另一个部门表depart表(int id, int uid ,String name),其中uid是对应user表id的外键,反转出来的bean中 User类中有一个depart的set集合属性的----这是背景----,------问题-->----我现在只想查询user表中的数据,可是hibernate的级联查询让我一下把depart表的东西也都查出来了,所以我就不知道该怎么办了 是使用hibernate的懒加载吗?应该怎么配置呢?我试过了一些方法(在user.cfg.xml文件中加入lazy=“false”)都不行,不知道怎么才可以不加载depart啊……
我在action类中是将查询出来的user作为一个json格式传送的 会不会跟这个有关系呢?Hibernate

解决方案 »

  1.   

    加上 lazy=“true”和 fetch = "select"
      

  2.   

    试一下getHibernateTemplate().find("select new User(id,name(你要查询的属性)) from User where ...(附加的条件)")
      

  3.   

    我猜想是你使用get的方式了,在hibernate中get方式是强制取数据的如果没有则会返回null而load是可以配置懒加载的。默认是使用懒加载。我怀疑你这是是使用get()导致的,不管你配不配懒加载,get都要去查询数据。还有,get跟懒加载没关系。
      

  4.   

    你可以尝试用load的方式看看
    在配上懒加载
      

  5.   

     用annotation注解   设置  那个改为  lazy  一般为  eager