0
如何在通过id查询记录时不应用@Where子句以便我可以检索软删除记录?将软删除记录视为已删除,除非通过ID查询
当某个用户被删除时,它会在其删除的字段中存储一个时间戳。我们希望软删除的用户被视为通常删除的记录,除非通过其ID在端点中查询。 (GET/users /:Id)。
当前代码已经解决了查询所有用户时不应该返回已删除记录的要求之一。但是,当通过GET /用户质疑这不返回被软删除的记录/:身份证
实体
@Entity(name = "user")
@Where(clause = "deleted IS NULL")
public class User {
@Id
@GeneratedValue
private Long id;
@Column(unique = true)
private String username;
private String password;
//getters and setters
}
控制器
@RequestMapping(method = RequestMethod.GET)
public ResponseEntity<PaginatedResponse<User>> getAllUsers(
Specification<User> spec,
@RequestParam(defaultValue = "") String[] sort,
@RequestParam(defaultValue = "50") int limit,
@RequestParam(defaultValue = "0") int offset) {
List<User> allUsers = userService.findAll(spec);
List<User> users = userService.findAll(spec, Pageables.with(offset, limit, sort));
return ResponseEntity.ok(new PaginatedResponse<>(allUsers.size(), limit, offset, users));
}
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public ResponseEntity<User> getUser(@PathVariable("id") Long userId) {
User user = userService.findOne(userId);
Objects.requireNonNull(user, "No user with id: " + userId);
return ResponseEntity.ok(user);
}
库
public interface UserRepository extends BaseRepository<User> {
}
@NoRepositoryBean
public interface BaseRepository<T> extends JpaRepository<T, Long>, JpaSpecificationExecutor<T> {
}