소프트 삭제 된 레코드를 검색 할 수 있도록 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> {
}