Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对于使用case语句分配优先级的每个类别,选择具有最大优先级的行_Java_Mysql_Database_Hibernate - Fatal编程技术网

Java 对于使用case语句分配优先级的每个类别,选择具有最大优先级的行

Java 对于使用case语句分配优先级的每个类别,选择具有最大优先级的行,java,mysql,database,hibernate,Java,Mysql,Database,Hibernate,考虑下表 指定MPPOSMAPID、empName、指定、部门、职务描述、指定日期 指定可以是初级、高级和主任,部门可以是多个部门之一。 如果未提及部门,则表示该人员持有所有部门的指定名称 每个部门可以有多个人担任相同的角色。此外,一个人可以在每个部门担任多个角色 样本数据 empPosId| empName | designation | department | desc | date --------|---------|-------------|------------|------

考虑下表

指定MPPOSMAPID、empName、指定、部门、职务描述、指定日期

指定可以是初级、高级和主任,部门可以是多个部门之一。 如果未提及部门,则表示该人员持有所有部门的指定名称

每个部门可以有多个人担任相同的角色。此外,一个人可以在每个部门担任多个角色

样本数据

empPosId| empName | designation | department | desc  | date
--------|---------|-------------|------------|-------|-------------
1       | per1    | DIRECTOR    | dept1      | blah1 | 2015-12-23
2       | per1    | SENIOR      | (NULL)     | blah1 | 2015-12-23
3       | per1    | JUNIOR      | dept2      | blah1 | 2015-12-23
4       | per2    | SENIOR      | dept1      | blah1 | 2015-12-23
5       | per2    | JUNIOR      | (NULL)     | blah1 | 2015-12-23
6       | per3    | DIRECTOR    | (NULL)     | blah1 | 2015-12-23
7       | per4    | JUNIOR      | dept2      | blah1 | 2015-12-23
任命级别为初级<高级<董事 此外,特定于部门的角色将覆盖整个角色。也就是说,per1的总体角色是高级主管,但他是部门1的主管,因此wrt部门1 per1将担任主管

我需要一个查询,以获取给定部门中每个人所持有的最高职务的详细信息

例如,对于dept1

empPosId| empName | designation | department | desc  | date
--------|---------|-------------|------------|-------|-------------
1       | per1    | DIRECTOR    | dept1      | blah1 | 2015-12-23
4       | per2    | SENIOR      | dept1      | blah1 | 2015-12-23
6       | per3    | DIRECTOR    | (NULL)     | blah1 | 2015-12-23
同样,对于dept2

empPosId| empName | designation | department | desc  | date
--------|---------|-------------|------------|-------|-----------
2       | per1    | SENIOR      | (NULL)     | blah1 | 2015-12-23
5       | per2    | JUNIOR      | (NULL)     | blah1 | 2015-12-23
6       | per3    | DIRECTOR    | (NULL)     | blah1 | 2015-12-23
7       | per4    | JUNIOR      | dept2      | blah1 | 2015-12-23
我有一个工作查询,它使用case语句通过分配数字并选择获得最高数字的行来确定最高指定。 问题是它太大了,我需要简化它并在hibernate中使用它:|

假设deptInput是用户感兴趣的部门

从empPosId所在的名称中选择* 从中选择一个.empPosId 选择*,大小写 当部门=那么4 当部门为空且名称=主管时,则为3 当部门为空且名称=高级时,则为2 当部门为空且名称=初级时,则为1 否则0将作为优先级结束 从名称d开始,部门为空或部门= a其中优先级= 选择最大大小写 当部门=那么4 当部门为空且名称=主管时,则为3 当部门为空且名称=高级时,则为2 当部门为空且名称=初级时,则为1 其他0结束 来自名称d,其中empName=a.empName按empName分组 无法修改表结构


任何人都可以帮助简化查询,因为我需要使用它从Java进行查询。或者在hibernate中有没有更简单的方法来做同样的事情

仅供参考:FROM子句中的Sub select语句不受支持,只有一些ORM框架(如体面版本中的EclipseLink)具有专有功能。到目前为止,Hibernate没有JPA标准,也不是JPA标准。Hibernate不会让事情变得更简单。它只是使SQL更适合于面向对象的框架。我相信Hibernate的人会告诉您首先进行面向对象的设计,然后围绕这个设计构建表模式。因为这对你来说是不可能的,我不会浪费时间寻找Hibernate解决方案。如果你必须从Java调用它,你能把它变成一个存储过程,优化它吗,并使用CallableStatement调用它?仅供参考:FROM子句中的子select语句不受支持,只有一些ORM框架(如EclipseLink)在体面的版本中具有专有功能。到目前为止,Hibernate没有JPA标准,也不是JPA标准。Hibernate不会让事情变得更简单。它只是使SQL更适合于面向对象的框架。我相信Hibernate的人会告诉您首先进行面向对象的设计,然后围绕这个设计构建表模式。因为这对你来说是不可能的,所以我不会浪费时间寻找Hibernate解决方案。如果你必须从Java调用它,你能把它变成一个存储过程,优化它,并使用CallableStatement调用它吗?