各位大虾,我有一个问题想请教一下,对hibernate不是很懂。
总共三个表,t_product_life险种表,
            t_agency代理公司表
            t_agency_product代理公司可销售的险种表
其中:t_agency代理公司表    这个表关联T_AGENCY_PRODUCT表,具体的定义如下: public class Agency implements Serializable {
private Set productList = new HashSet();

    public Set getProductList() {
return productList;
} public void setProductList(Set productList) {
this.productList = productList;
}
  }//其它字段略 而对应的agency.hbm.xml文件是:<hibernate-mapping>
<class
    name="com.ulic.tars.domain.Agency"
    table="T_AGENCY"
    dynamic-update="true"
    dynamic-insert="true"
    lazy="false"

<id
        name="agencyId"
        type="java.lang.Long"
        column="AGENCY_ID"
    >
<set name="productList" table="T_AGENCY_PRODUCT"  lazy="false" inverse="false" >
      <key column="agency_id"/>
      <many-to-many column="product_id" class="com.ulic.tars.domain.ProductLife"/>
    </set></hibernate-mapping>现在我想要做的是从另一个表,t_product_life中检索出相关的险种信息
   
   对应的sql语句是:
     select * from t_product_life a,t_agency b,t_agency_product c
       where a.product_id=c.product_id 
         and b.agency_id=c.agency_id
         and b.organ_code=1037;     

解决方案 »

  1.   

    竟然忘记问问题了,如何写hibernate查询语句
      

  2.   

    多对多查询要建立第三方表,      楼主的业务是不是 要对t_product_life险种表 和 t_agency代理公司表 两个表联合查询,而  t_agency_product代理公司可销售的险种表 是为联合查询而建立的第三方表啊?
      

  3.   

    可以使用session.createSqlQuery("sql语句");直接用sql语句查。
      

  4.   

    对的,t_agency_product是第三方表。这个表只有两个字段,一个是t_product_life表的product_id,一个字段是t_agency表中的agency_id.
    现在的问题是,我这个中间表没有相应的hibernate映射对象,那如何能够进行相关的检索实现我的需求呢?
      

  5.   

    大体写个,不知道合不合楼主的要求。public void testLoad1() {
    Session session = null;
    try {
    session = HibernateUtils.getSession();
    session.beginTransaction();
    Agency ag = (Agency)session.load(Agency.class, 1037);

    for (Iterator iter=Agency.getProductList().iterator(); iter.hasNext();) {
     ProductLife pr = (ProductLife)iter.next();
    System.out.println(pr.getName());
    }
    session.getTransaction().commit();
    }catch(Exception e) {
    e.printStackTrace();
    session.getTransaction().rollback();
    }finally {
    HibernateUtils.closeSession(session);
    }
    } 查询不要查询第三方表的,它只是把两张表关联起来。另外楼主最好配置成双向映射:在Productlife.hbm.xml里也相应配置映射,类里添加相应属性。
      

  6.   

     session = HibernateUtils.getSession();
    忘记说了 HibernateUtils 是我自己写的管理sessionFactory的工具类,楼主自己手动创建sessionFactory