代码之家  ›  专栏  ›  技术社区  ›  niklassaers

通过示例休眠查询(来自Spring3)

  •  3
  • niklassaers  · 技术社区  · 15 年前

    我已经上了实体课程 Adress , Road County . 一 道路 是在 和一个 地址 在一个 道路 . 我想列出所有 Adresses 在一个 . 因此,在我的 AdressService 我说:

    public List<Adress> AllAdresses(County county) {
      Adress adress = new Adress();
      Road road = new Road();
      road.setCounty(county);
      adress.setRoad(road);
    
      Example example = Example.create(adress);
      return (List<Adress>) adressDAO.query(Adress.class, example);
    }
    

    在我的 AdressDAO 我有Quices():

    public List query(Class<?> c, Example example) {
      return getSession().createCriteria(c).add(example).setMaxResults(100).list();
    }
    

    这将在我的数据库服务器上执行以下查询:

    select this_.AdressId as AdressId2_0_, 
           this_.Description as Descript3_2_0_, 
           this_.DescriptionShort as Descript4_2_0_, 
           this_.HouseLetter as HouseLetter2_0_, 
           this_.HouseNr as HouseNr2_0_, 
           this_.RoadId as RoadId2_0_ 
    from tblAdress this_ 
    where (this_.HouseNr=0) 
    limit 100
    

    我原本希望它至少包括一些关于我的实体的信息 和内部连接 tblRoad . 图布路 有主键 roadId 所以我期待 this_.roadId 与…结合 tblRoad.roadId ,我想 tblRoad.countyId 要设置为的主键 ,也就是说 countyId .

    当我使用自己的实体类型时,为什么本例中的查询没有正确构建?如果我只使用整数和字符串,它们可以正常工作,但不使用实体。我如何使这样的连接与我自己的实体一起工作?

    1 回复  |  直到 15 年前
        1
  •  2
  •   skaffman    15 年前

    Hibernate docs :

    版本属性、标识符和 关联被忽略

    正如他们所说,就是这样。