Java 使用查询从方法返回两个值

Java 使用查询从方法返回两个值,java,Java,我有2个表User和Role,RoleId是User表中的外键, 所以我在这里写了一个方法,但是它没有返回我想要的输出。我想计算有多少用户(例如RoleId=1)和有多少用户RoleId=2: 创建一个返回数组的方法 public int[] countPersonelAdminandWorker() throws PerdoruesiException{ Query query = em.createNativeQuery("SELECT COUNT(RoleID) from

我有2个表User和Role,RoleId是User表中的外键, 所以我在这里写了一个方法,但是它没有返回我想要的输出。我想计算有多少用户(例如RoleId=1)和有多少用户RoleId=2:


创建一个返回数组的方法

public int[] countPersonelAdminandWorker() throws PerdoruesiException{
        Query query = em.createNativeQuery("SELECT COUNT(RoleID) from User p where p.roleID = 1 ");
        Query queryForWorker = em.createNativeQuery("SELECT COUNT(RoleID) from User p where p.roleID = 2");

        try{
            return new int[]{(int)query.getSingleResult(),(int)queryForWorker.getSingleResult()};
        }catch(NoResultException e){
            throw new PerdoruesiException("...");
        }


    }

创建一个返回数组的方法

public int[] countPersonelAdminandWorker() throws PerdoruesiException{
        Query query = em.createNativeQuery("SELECT COUNT(RoleID) from User p where p.roleID = 1 ");
        Query queryForWorker = em.createNativeQuery("SELECT COUNT(RoleID) from User p where p.roleID = 2");

        try{
            return new int[]{(int)query.getSingleResult(),(int)queryForWorker.getSingleResult()};
        }catch(NoResultException e){
            throw new PerdoruesiException("...");
        }


    }

选择COUNTRoleID作为“Count Role ID”,roleID来自用户p,其中p.roleID=1或p.roleID=2按p.roleID分组

选择COUNTRoleID作为“Count Role ID”,其中p.roleID=1或p.roleID=2由p.roleID分组

GoogleforGroupByGoogleforGroupByJobaySerozib,如果你想同时计算RoleId 1和RoleId 2,那么代码就不起作用了。为什么?请您解释一下。您的代码是fing,但它会计算拥有RoleId1或RoleId2的用户,重点是要计算有多少用户拥有RoleId1和RoleId2。这就是为什么我使用GROUP BY这将RoleId1和RoleId2分开RoleID2@Dreni:你的答案比这个好多少,因为这是解决原始海报问题的更标准、更健壮的方法?jobayserozib,如果你想同时计算RoleId 1和RoleId 2,那么代码就不起作用了。为什么?请您解释一下。您的代码是fing,但它会计算拥有RoleId1或RoleId2的用户,重点是要计算有多少用户拥有RoleId1和RoleId2。这就是为什么我使用GROUP BY这将RoleId1和RoleId2分开RoleID2@Dreni:你的答案比这个好多少,因为这是解决原始海报问题的更标准、更有力的方法?你和TheFlash是同一个人吗?你和TheFlash是同一个人吗?