"Show deleted" 复选框未按预期工作
"Show deleted" checkbox not working as intended
我已经在我想象中的视频租赁应用程序中实施了软删除行为,现在我正在尝试实施一种方法来重新激活我的“已删除”客户,但我无法让我的方法起作用,肯定是什么很简单,但是google没让我找到答案,所以我来了。
这是我的回购接口 (JpaRepository) 的摘录:
@Query("select m from Movie m where m.isDeleted = true")
List<Movie> findAllIsDeleted();
@Override
@Query("select m from Movie m where m.isDeleted=false")
List<Movie> findAll();
@Modifying
@Transactional
@Query("update Movie m set m.isDeleted=true where id=?1")
void softDelete(Long id);
在我的服务中class我有:
public List<Movie> findAllMovies(String filterText) {
if (filterText == null || filterText.isEmpty()) {
return movieRepository.findAll();
} else {
return movieRepository.search(filterText);
}
}
public List<Movie> findAllDeletedMovies() {
return movieRepository.findAllIsDeleted();
}
我的列表视图 class 的摘录如下:
...
Checkbox showDeleted = new Checkbox("Show deleted movies", e -> {
updateList();
Notification.show(e.getValue().toString());
});
...
private void updateList() {
if (showDeleted.getValue() == true) {
grid.setItems(service.findAllDeletedMovies());
}
grid.setItems(service.findAllMovies(filterText.getValue()));
}
但很明显听者部分有问题,或者有一个我不知道的无声“确定我们想要帮助功能”。因为没有执行updateList函数。我错过了什么?
我不认识你数据table设计,
但你可以试试这个
"select m.* 来自电影 m,其中 m.isDeleted = true"
问题出在你的updateList
方法的实现上。
无论复选框的值是否为真,最后它总是再次设置 service::findAllMovies
返回的项目。
将最后一条语句移到 else
块中,它应该可以工作。
private void updateList() {
if (showDeleted.getValue()) { // btw, if(boolValue == true) is redundant. just do if(boolValue)
grid.setItems(service.findAllDeletedMovies());
} else {
grid.setItems(service.findAllMovies(filterText.getValue()));
}
}
我已经在我想象中的视频租赁应用程序中实施了软删除行为,现在我正在尝试实施一种方法来重新激活我的“已删除”客户,但我无法让我的方法起作用,肯定是什么很简单,但是google没让我找到答案,所以我来了。
这是我的回购接口 (JpaRepository) 的摘录:
@Query("select m from Movie m where m.isDeleted = true")
List<Movie> findAllIsDeleted();
@Override
@Query("select m from Movie m where m.isDeleted=false")
List<Movie> findAll();
@Modifying
@Transactional
@Query("update Movie m set m.isDeleted=true where id=?1")
void softDelete(Long id);
在我的服务中class我有:
public List<Movie> findAllMovies(String filterText) {
if (filterText == null || filterText.isEmpty()) {
return movieRepository.findAll();
} else {
return movieRepository.search(filterText);
}
}
public List<Movie> findAllDeletedMovies() {
return movieRepository.findAllIsDeleted();
}
我的列表视图 class 的摘录如下:
...
Checkbox showDeleted = new Checkbox("Show deleted movies", e -> {
updateList();
Notification.show(e.getValue().toString());
});
...
private void updateList() {
if (showDeleted.getValue() == true) {
grid.setItems(service.findAllDeletedMovies());
}
grid.setItems(service.findAllMovies(filterText.getValue()));
}
但很明显听者部分有问题,或者有一个我不知道的无声“确定我们想要帮助功能”。因为没有执行updateList函数。我错过了什么?
我不认识你数据table设计, 但你可以试试这个
"select m.* 来自电影 m,其中 m.isDeleted = true"
问题出在你的updateList
方法的实现上。
无论复选框的值是否为真,最后它总是再次设置 service::findAllMovies
返回的项目。
将最后一条语句移到 else
块中,它应该可以工作。
private void updateList() {
if (showDeleted.getValue()) { // btw, if(boolValue == true) is redundant. just do if(boolValue)
grid.setItems(service.findAllDeletedMovies());
} else {
grid.setItems(service.findAllMovies(filterText.getValue()));
}
}