from  t2 a where a.t1 = 1上面这语句就是个示例,应该能表明我的意思,t1和t2是两个表的实体类,t1包含id字段,t2包含tid字段,是个one-one的映射,t2的实体类里面包含t1这个域映射到t1实体类,按照正常理解语句应该是这样的from  t2 a where a.t2.tid = 1a.t2.tid = 1这个我理解,直接a.t1 = 1这我就不理解了,a.t1是个实体类的对象直接和常量比较?刚接触hibernate,不是很理解

解决方案 »

  1.   

    这是hql语句吧,调用 t2里面的t1属性
      

  2.   

    是hql,写代码明白点,意思就是public class T1//t1是某表的实体类
    {
      private int id;
      //省略setter getter
    }public class T2//t2是某表的实体类
    {
      private int tid;
      private T1 t1;//这个ti域是个one-to-one映射,通过tid与T1的id对应
      //省略setter getter
    }String hqlText = "from T2 a where a.t1 = 1";
    //就是这里,a.t1是个对象,怎么能与常量1比较?但实际上是没有问题的,可以查询结果正确,
    //和a.t1.tid = 1是等效的,这是为什么?
      

  3.   

    上面最后打错了,是和a.t1.id = 1等效的