【问题标题】:Can any one convert sql query to hibernate criteria任何人都可以将sql查询转换为休眠条件吗
【发布时间】:2016-01-08 06:58:00
【问题描述】:

我有一个sql 查询。任何人都可以转换为休眠标准吗?

SELECT TH_ID,TH_NAME FROM t_o2_th_master WHERE TH_ID IN(SELECT TH_ID FROM t_o2_user_gameplay WHERE USER_ID=10010 AND STATUS_TYPE_CODE_ID=1303)

这是我的字段名称实体类:

SELECT treasureHuntId,treasureHuntName FROM TreasureHuntMasterEntity WHERE treasureHuntId IN(SELECT treasureHuntId FROM UserGamePlayEntity WHERE userId:userID AND statusTypeCodeId:statusTypeCodeID)

【问题讨论】:

    标签: java sql hibernate


    【解决方案1】:

    改变

    WHERE userId:userID
    

    WHERE userId = :userID
    

    【讨论】:

      【解决方案2】:

      我们可以使用 hibernate 直接运行 SQL 查询。 Hibernate 提供了两种不同类型的查询

      • HQL 查询。我们可以在 SQL 中做所有可能的事情
      • 标准查询。我们已经根据对象定义了标准。

      【讨论】:

      • 是的,我已经将 sql 查询转换为休眠状态,像这样 SELECT TreasureHuntId,treasureHuntName FROM TreasureHuntMasterEntity WHERE TreasureHuntId IN(SELECT TreasureHuntId FROM UserGamePlayEntity WHERE userId:userID AND statusTypeCodeId:statusTypeCodeID)
      • 但我收到这样的错误 2016-01-08 12:43:19,070 test ERROR ErrorCounter:54 - line 1:221: unexpected token: userId 2016-01-08 12:43:19,072测试错误 ErrorCounter:50 - 第 1:221 行:意外令牌:userId 第 1:221 行:意外令牌:userId at
      • 这类似于名称查询。我认为那里缺少平等。 SELECT TreasureHuntId,treasureHuntName FROM TreasureHuntMasterEntity WHERE TreasureHuntId IN(从 UserGamePlayEntity 中选择 TreasureHuntId WHERE userId=:userID AND statusTypeCodeId=:statusTypeCodeID)
      【解决方案3】:
      SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
      session = sessionFactory.openSession();
      Criteria criteria =session.createCriteria( t_o2_th_master.class );
      criteria.createCriteria( "t_o2_user_gameplay", "user" );
      criteria.add( Restrictions.eq( "user.userId", 10010 ) );
      criteria.add( Restrictions.eq( "user.statusTypeId", 1303 ) );
      t_o2_th_master masterList = criteria.list();
      t_o2_th_master master=null;
      if(masterList.size()>0){
          master=masterList.get(0);
      }
      

      【讨论】:

        猜你喜欢
        • 2023-04-01
        • 1970-01-01
        • 2016-01-03
        • 1970-01-01
        • 2012-10-18
        • 1970-01-01
        • 2019-07-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多