当前位置: 首页 > 知识库问答 >
问题:

使用Hibernate条件从数据库中检索数据列表

竺勇
2023-03-14

我有一个名为employee_comp_field的表,其中提供了薪资字段

  comp_field id  | year_id  | compensation_field  
       1                 101         salary            
       2                 101         bonus
       3                 101         pf
       4                 101         allowance
       5                 102         salary            
       6                 102         bonus
       7                 102         pf
       8                 102         allowance

然后,我有另一个表,其中员工工资数据存储emp_compensation每个字段。正如你所看到的emp_id 10有三套记录,因为他在同一年获得了三次加薪(year_id=101),这可以通过salary_order领域来识别。

    id  |  year_id  |  emp_id  | comp_field_id  |  amount  |  comp_order
    1        101         10            1           10000          1
    2        101         10            2           1000           1
    3        101         10            3           1000           1
    4        101         10            4           100            1
    5        101         10            1           12000          2
    6        101         10            2           100            2
    7        101         10            3           10000          2
    8        101         10            4           10000          2
    9        101         10            1           15000          3
    10       101         10            2           500            3
    11       101         10            3           150            3
    12       101         10            4           1500           3
    13       101         11            1           13000          1
    14       101         11            2           1300           1
    15       101         11            3           null           1
    16       101         11            4           150            1

我想用最大工资确定所有雇员的名单,我的期望输出如下:

    id  |  year_id  |  emp_id  | comp_field_id  |  amount  |  comp_order
    9        101         10            1           15000          3
    10       101         10            2           500            3
    11       101         10            3           150            3
    12       101         10            4           1500           3
    13       101         11            1           13000          1
    14       101         11            2           1300           1
    15       101         11            3           null           1
    16       101         11            4           150            1

emp_id10号得到了三次加薪……所以我用salary_order3检索记录列表,emp_id11号得到了一个,所以我用salary_order1检索那组记录。

有人能在这里帮助我吗?如何使用hibernate标准检索我的期望输出。

我的想法是首先根据emp_id检索所有列表,然后使用java流,如果我们可以过滤掉它以获得所需的输出。

请建议最好的方法。

共有1个答案

裴钧
2023-03-14

最好的方法。

是主观的。它可以是最快的,也可以是最短的。它可以是任何东西。

我将给你一个例子,说明如何在mysql中构建查询来复制你的输出。这可能很难用Criteria来解决,因为表是自连接的。

select a.*
from emp_compensation a
         left outer join emp_compensation b on a.emp_id = b.emp_id
    and a.comp_field_id = b.comp_field_id
    and a.comp_order < b.comp_order
where b.emp_id is null
 类似资料:
  • 我试图实现一对一聊天使用firebase实时数据库,我插入消息与senderid,Recieverid,消息,日期,sendername,Recievername,在我的情况下,不同的用户是不同的聊天室,我需要展示这个聊天室一对一聊天室我如何实现在我的android应用程序 下面是我检索数据的代码 但这段代码从聊天室获取所有数据,但我需要排除发送者名和接收者名相等的消息,sendername是从应

  • 其中mDatabase是对Firebase数据库的引用,而num是用于检索随机问题的随机值。我已经为4个选项重复了上述代码a 4次,但当我有2个选项时,如上面提到的和数据库结构中所示,我的应用程序停止工作。 我们将非常感谢所有的帮助。

  • 我们在学校使用hibernate,我们正在实施贷款。我们有一个持续的贷款类别,根据贷款信息(付款金额、到期总额等),应用程序应计算特定贷款的全部付款报价。 因此,我们有一个Quote类,其中包含有关该Quote的信息,Loan类有一个所有Quote的列表(类之间的组合)。 由于报价信息是可计算的,我认为它不应该出现在数据库中。 我的问题是,当Hibernate从DB获得贷款时,如何让它计算并填充报

  • 我正在两个标记之间画一条路线,我想保存那条路线。为此,我将包含lat和lng的ArrayList保存在Firebase数据库中。但我在取回航路点时遇到了问题。我是这样插入的: 在检索数据时,我尝试执行以下操作:

  • 我试图用Spring jdbc和Jersey从mysql数据库中检索数据,我的代码是 Dao是getUsers()。如果我想获得所有用户,它工作良好,我可以在一个jsp上显示他们。 下面是资源类 类型异常报告 消息java.lang.NullPointerException 说明服务器遇到内部错误,导致它无法完成此请求。 注意,Apache Tomcat/7.0.68日志中提供了根本原因的完整堆栈

  • 我试图创建一个简单的程序,从用户的名字,手机号码和电子邮件地址,然后把数据在Firebase实时数据库。 有3个输入框和一个按钮,按一下就可以完成上面的操作。代码如下: 我这样设置了消防基地: