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

我的 Json 响应结果与数据库查询结果不同

艾正浩
2023-03-14

因此,当我通过电子邮件和密码获取数据时,我想使用本地查询作为我的查询方法,但我在json中得到的响应与数据库查询结果不同

这是我的存储库中的本机查询.java

public interface UsersRepository extends JpaRepository<Users, Long>{
    @Query(value="SELECT * "
            + "FROM USERS u " 
            + "JOIN HAK_AKSES h "
            + "ON (u.USER_ID = h.USER_ID) "
            + "JOIN ROLES r "
            + "ON (h.ROLE_ID = r.ROLE_ID) "
            + "JOIN ROLE_MENU rm "
            + "ON (r.ROLE_ID = rm.ROLE_ID) "
            + "JOIN MENU m "
            + "ON (rm.MENU_ID = m.MENU_ID) "
            + "WHERE u.EMAIL = :email AND u.PASSWORD = :password ", 
            nativeQuery = true)
    List<Users> getAll(@Param("email") String email, @Param("password") String password);
}

这是我的服务

public class UsersService {
    @Autowired
    UsersRepository usersRepository;
    
    @Autowired
    HakAksesRepository hakAksesRepository;
    
    
    public List<UsersWrapper> getAll(String email, String password) {
        List<Users> loginList = usersRepository.getAll(email, password);
        return toWrapperList(loginList);
    }

    private UsersWrapper toWrapper(Users entity) {
        UsersWrapper wrapper = new UsersWrapper();
        wrapper.setUserId(entity.getUserId());
        wrapper.setUsername(entity.getUsername());
        wrapper.setPassword(entity.getPassword());
        wrapper.setNama(entity.getNama());
        wrapper.setAlamat(entity.getAlamat());
        wrapper.setEmail(entity.getEmail());
        wrapper.setTelp(entity.getTelp());
        wrapper.setProgramName(entity.getProgramName());
        wrapper.setCreatedDate(entity.getCreatedDate());
        wrapper.setCreatedBy(entity.getCreatedBy());
        wrapper.setUpdatedDate(entity.getUpdatedDate());
        wrapper.setUpdatedBy(entity.getUpdatedBy());
        wrapper.setHakAksesId(entity.getHakAksesId());
        return wrapper;
    }
    

    private List<UsersWrapper> toWrapperList(List<Users> entityList) {
        List<UsersWrapper> wrapperList = new ArrayList<UsersWrapper>();
        for (Users entity : entityList) {
            UsersWrapper wrapper = toWrapper(entity);
            wrapperList.add(wrapper);
        }
        return wrapperList;
    }
    


    private Users toEntity(UsersWrapper wrapper) {
        Users entity = new Users();
        if (wrapper.getUserId() != null) {
            entity = usersRepository.getReferenceById(wrapper.getUserId());
        }
        Optional<HakAkses> optionalHakAkses = hakAksesRepository.findById(wrapper.getUserId());
        HakAkses hakAkses = optionalHakAkses.isPresent() ? optionalHakAkses.get() : null;
        entity.setHakAksesId(hakAkses.getHakAksesId());
        entity.setUsername(wrapper.getUsername());
        entity.setPassword(wrapper.getPassword());
        entity.setNama(wrapper.getNama());
        entity.setAlamat(wrapper.getAlamat());
        entity.setEmail(wrapper.getEmail());
        entity.setTelp(wrapper.getTelp());
        entity.setProgramName(wrapper.getProgramName());
        entity.setCreatedDate(wrapper.getCreatedDate());
        entity.setCreatedBy(wrapper.getCreatedBy());
        entity.setUpdatedDate(wrapper.getUpdatedDate());
        entity.setUpdatedBy(wrapper.getUpdatedBy());
        return entity;
    }

}
here is the response i get in json

{ “状态”: true, “消息”: null, “时间戳”: 1671604833867, “数据”: [ { “userId”: 1, “用户名”: “user1”, “password”: “user1”, “nama”: “User 1”, “alamat”: “Jakarta”, “email”: “user1@gmail.com”, “telp”: “085729380129”, “programName”: null, “createdDate”: “2022-12-20”, “createdBy”: “user1”, “updateDate”: “2022-12-20”, “updateBy”: “user1”, “hakAksesId”: 1 }, { “userId”: 1, “用户名”: “user1”, “password”: “user1”, “nama”: “User 1”, “alamat”: “Jakarta”, “email”: “user1@gmail.com”, “telp”: “085729380129”, “程序名称”: 空, “创建日期”: “2022-12-20”, “创建者”: “用户1”, “更新日期”: “2022-12-20”, “更新者”: “用户1”, “hakAksesId”: 1 }, { “用户ID”: 1, “用户名”: “用户1”, “密码”: “用户1”, “nama”: “用户 1”, “alamat”: “Jamat” karta“, ”电子邮件“: ”user1@gmail.com“, ”telp“: ”085729380129“, ”程序名称“: null, ”createdDate“: ”2022-12-20“, ”createdBy“: ”user1“, ”updateDate“: ”2022-12-20“, ”updateBy“: ”user1“, ”hakAksesId“: 1 }, { ”userId“: 1, ”用户名“: ”user1“, ”password“: “user1”, “nama”: “用户 1”, “alamat”: “Jakarta”, “email”: “user1@gmail.com”, “telp”: “085729380129”, “programName”: null, “createdDate”: “2022-12-20”, “createdBy”: “user1”, “updateDate”: “2022-12-20”, “updateBy”: “user1”, “hakAksesId”: 1 }, { “userId”: 1, “用户名”: “user1”, “密码”: “user1”, “nama”: “用户 1”, “alamat”: “雅加达”, “电子邮件”: “user1@gmail.com”, “telp”: “085729380129”, “程序名称”: 空, “创建日期”: “2022-12-20”, “创建者”: “用户1”, “更新日期”: “2022-12-20”, “updateBy”: “user1”, “hakAksesId”: 1 }, { “userId”: 1, “用户名”: “user1”, “password”: “user1”, “nama”: “User 1”, “alamat”: “Jakarta”, “email”: “user1@gmail.com”, “telp”: “085729380129”, “programName”: null, “createdDate”: “2022-12-20”, “createdBy”: “user1”, “updateDate”: “2022-12-20”, “updateBy”: “user1”, “hakAksesId”: 1 } ] }


这就是数据库中查询结果的数据外观,因此 HAKAKSES 列没有获得其他值

共有1个答案

欧阳昊阳
2023-03-14

在本机查询中使用*,在数据库中选择所选数据

public interface UsersRepository extends JpaRepository<Users, Long>{
        @Query(value="SELECT u.UserId, "
                + "FROM USERS u " 
                + "JOIN HAK_AKSES h "
                + "ON (u.USER_ID = h.USER_ID) "
                + "JOIN ROLES r "
                + "ON (h.ROLE_ID = r.ROLE_ID) "
                + "JOIN ROLE_MENU rm "
                + "ON (r.ROLE_ID = rm.ROLE_ID) "
                + "JOIN MENU m "
                + "ON (rm.MENU_ID = m.MENU_ID) "
                + "WHERE u.EMAIL = :email AND u.PASSWORD = :password ", 
                nativeQuery = true)
        List<Users> getAll(@Param("email") String email, @Param("password") String password);
    }
 类似资料:
  • 问题内容: 当用户最初单击按钮时,将运行查询,并将每一行放入JPanel中并添加到显示中,以供用户查看。哪个工作正常。 我的问题是,我希望用户能够根据它们提供的值(通过JTextField)过滤这些结果,并且我希望显示的记录随着JTextField值的更改而更新。每次更改JTextField时都会形成并执行我的查询,但是我找不到更新显示记录的方法。 任何帮助,将不胜感激。 该代码花了一些时间进行编

  • 要运行查询,在工具栏中点击 运行 。如果查询语句是正确的,该查询将被运行,如果该查询应该返回数据,结果 选项卡会打开查询返回的数据。如果运行查询时发生错误,运行停止,显示相应的错误信息。 结果 选项卡以网格显示查询返回的结果数据。数据可以用两种模式显示:网格查看 和 表单查看。详细信息请看表查看 器。 提示:Navicat 支持返回 10 个结果集。 注意:你可以通过选择 查看 -> 显示结果 -

  • 你可以在任何的服务器运行查询。在工具栏的下拉式列表中选择目标服务器和数据库。然后点击 “运行”。如果该查询语句是正确的,它将被运行。如果该查询应该返回数据,“结果”选项卡会打开并显示返回的数据。如果运行查询时发生错误,运行会停止并显示相应的错误信息。 “结果”选项卡以网格显示查询返回的结果数据。数据可以用三种模式显示:网格视图、树视图和 JSON 视图。详细信息请参阅数据查看器。 【注意】Navi

  • 你可以在任何的服务器运行查询。在工具栏的下拉式列表中选择目标服务器、数据库和/或模式。然后点击 “运行”。如果该查询语句是正确的,它将被运行。如果该查询应该返回数据,“结果”选项卡会打开并显示返回的数据。如果运行查询时发生错误,运行会停止并显示相应的错误信息。 “结果”选项卡以网格显示查询返回的结果数据。数据可以用两种模式显示:网格视图和表单视图。详细信息请参阅数据查看器。 【注意】Navicat

  • 你可以在任何的服务器运行查询。在工具栏的下拉式列表中选择目标服务器和数据库。然后点击 。如果该查询语句是正确的,它将被运行。如果该查询应该返回数据,“结果”选项卡会打开并显示返回的数据。如果运行查询时发生错误,运行会停止并显示相应的错误信息。 “结果”选项卡以网格显示查询返回的结果数据。数据可以用三种模式显示:网格视图、树视图和 JSON 视图。详细信息请参阅数据查看器。 【注意】Navicat

  • 你可以在任何的服务器运行查询。在工具栏中,从下拉式菜单选择目标服务器、数据库和/或模式。然后点击 。如果该查询语句是正确的,它将被运行。如果该查询应该返回数据,“结果”选项卡会打开并显示返回的数据。如果运行查询时发生错误,运行会停止并显示相应的错误信息。 “结果”选项卡以网格显示查询返回的结果数据。数据可以用两种模式显示:网格视图和表单视图。详细信息请参阅数据查看器。 【注意】Navicat 支持

  • 你可以在任何的服务器运行查询。在工具栏的下拉式列表中选择目标服务器和数据库。然后点击 “运行”。如果该查询语句是正确的,它将被运行。如果该查询应该返回数据,“结果”选项卡会打开并显示返回的数据。如果运行查询时发生错误,运行会停止并显示相应的错误信息。 “结果”选项卡以网格显示查询返回的结果数据。数据可以用三种模式显示:网格视图、树视图和 JSON 视图。详细信息请参阅数据查看器。 【注意】Navi

  • 你可以在任何的服务器运行查询。在工具栏中,从下拉式列表选择目标服务器、数据库和/或模式。然后点击 “运行”。如果该查询语句是正确的,它将被运行。如果该查询应该返回数据,“结果”选项卡会打开并显示返回的数据。如果运行查询时发生错误,运行会停止并显示相应的错误信息。 “结果”选项卡以网格显示查询返回的结果数据。数据可以用两种模式显示:网格视图和表单视图。详细信息请参阅数据查看器。 【注意】Navica