因此,当我通过电子邮件和密码获取数据时,我想使用本地查询作为我的查询方法,但我在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 列没有获得其他值
在本机查询中使用*,在数据库中选择所选数据
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