我在使用时设置了级联.怎么能在查询时让他不级联呢?.
也就是说我有时会需要级联.但有时不想级联!怎么实现!!高手.帮忙!
先!!谢谢了啊

解决方案 »

  1.   

    在配置文件中设置cascade级联属性<many-to-one>或<one-to-many>中设置是否启用懒加载。lazy="fase"-->使用即时加载,针对于对象的所有信息进行级联查询lazy="true"或者lazy="proxy"(与hibernate版本有关)-->使用默认的加载方式,延迟加载(即懒加载)
    ======================================
    以上设置只是针对于单个表的配置文件,可自行灵活控制
      

  2.   

    用ajax去做!层层调用![color=#800000]你的结贴率太低了 不知道人家看了 会不会跟你说![/color]
      

  3.   

     多对一默认情况下是使用延迟加载的,其实这个无可厚非,
    一个人属于哪个机构,查询人的信息的时候,机构的信息也查询上来对性能没什么影响
    如果你非要加载机构的信息,那你就配置一下级联关系我就用hibernate中注解的方式说一下配置 
    @ManyToOne(fetch=FetchType.LAZY)配置它的读取策略为lazy就可以了对于一对多的话 ,配置如下,就是延迟加载。 
    级联这玩意做项目中用的少。理解怎么回事就可以了
    [code=Java]
    @OneToMany
    @LazyCollection(LazyCollectionOption.EXTRA)
    private Set<UserRoles> children; 
    code]
      

  4.   

    一对一默认是延迟加载,一对多则是不加载,如果需要可也配置 lazy="false" 不过这样以来每次查询都会自动加载, 最好的办法是不配置 lazy="false"在dao里面使用QBC查询,需要加载时         DetachedCriteria dc = DetachedCriteria.forClass(clazz);
    dc.add(Restrictions.eq(eq, oid));// 相等的条件
    dc.setFetchMode(“你要加载的集合(list)”, FetchMode.JOIN);// 配置欲先抓取
    return findByDc(dc).get(0);当然你也可以给一对一同样的配置 ,不过一对一一定要先把默认的延迟加载改回来(lazy="true") DetachedCriteria dc = DetachedCriteria.forClass(clazz);
    dc.add(Restrictions.eq(eq, oid));// 相等的条件
    dc.setFetchMode(“你要加载的实体(bean)”, FetchMode.JOIN);// 配置欲先抓取
    return findByDc(dc).get(0);