当前位置: 首页 > 面试题库 >

Hibernate:如何使用条件查询从组合键获取记录

姬魁
2023-03-14
问题内容

我已经在hbm文件中添加了复合文件,如下所示

<hibernate-mapping>
<class name="EmployeeSignin" table="EMPLOYEE_SIGNIN">
<composite-id name="id" class="EmployeeSigninId">
        <key-property name="empId" type="string">
            <column name="EMP_ID" length="10" />
        </key-property>
        <key-property name="signinDate" type="date">
            <column name="SIGNIN_DATE" length="7" />
        </key-property>
</composite-id>
</class>
</hibernate-mapping>

现在我想查询如下

select * from EmployeeSignin where emp_id='12345' and signin_date > 'some initial date' and signin_date<= 'some last date'

我没有得到相同的结果,因为有一个引用EmployeeSignId的组合键。在这种情况下,如何创建条件查询?

我在下面尝试过但得到0条记录

Criteria empAttendanceCr=session2.createCriteria(EmployeeSigninId.class);
Criterion attdDateCondition = Restrictions.conjunction()
                .add(Restrictions.eq("empId", user.getEmpId()))
                .add(Restrictions.le("signinDate", lastDate))
                .add(Restrictions.ge("signinDate", startDate));

        List empAttendanceList=empAttendanceCr
                .add(attdDateCondition).list();

问题答案:

问题已解决。

我尝试了下面的工作

Criteria empAttendanceCr=session2.createCriteria(EmployeeSignin.class);
        //EmployeeSigninId empId=new EmployeeSigninId(user.getEmpId().toString());

        Criterion attdDateCondition = Restrictions.conjunction()                    
                .add(Restrictions.eq("id.empId",user.getEmpId().toString()))
                .add(Restrictions.le("id.signinDate", lastDate))
                .add(Restrictions.ge("id.signinDate", startDate));


 类似资料:
  • 问题内容: SELECT supplier_id FROM suppliers UNION ALL 我只是在查询的“ UNION ALL”子句上方和查询的“ UNION ALL”子句上方创建两个条件。 但是我的问题是我如何在条件中执行UNION ALL子句?提前致谢。 问题答案: 我认为hibernate不支持条件,但是您可以使用两个条件查询来获得预期的结果:

  • 我在代码中使用条件查询。它总是激发 相反,我想忽略查询中的一列(字段),因为该字段以字节形式存储了大量数据。导致性能问题。 有谁能给出一个主意吗? 一些更新 我在查询中添加了一个投影,它创建了一个类似... 现在问题就像..中的未知列“y4_”以及y8_和y5_的相同错误意味着关闭它给出错误的所有内容。 我把它修改成像... 而且奏效了。但是不知道在HQL里面怎么修改?

  • 问题内容: 在日志中,我得到: “来自LAHETYS”发生了什么事?使用HQL或/和SQL处理此问题的最佳实践是什么? 另一个问题: 我得到一个例外: 所以我不能将对象投射到我的Lahetys对象上,很奇怪吗? 谢谢!佐美 问题答案: 您的HQL查询无效。LIMIT不是有效的HQL子句。要在Hibernate中做到这一点,只需

  • 我有一个名为“弗兰克”的DynamoDB表,只有一个GSI。分区键称为PK,排序键称为SK,GSI分区键称为GSI1_PKGSI排序键称为GSI1_SK。我有一个存储实际数据的“数据”映射。 GSI分区键和排序键直接映射到表中具有相同名称的属性。 我可以运行partiql查询来获取图像中显示的结果。以下是PartIQ代码: 注意分区代码是如何多次引用“GSI1_SK”的。分区查询有效,并返回图像中

  • 在我的项目中,我希望获得上周记录、插入记录、基于createdtimestamp和product Type的记录。我在下面添加了sql和hibernate查询,在这里,sql查询运行良好,但hibernate查询给出错误。请帮助我如何将sql查询转换为hibernate查询。