Как найти список <Object>, отсортированный по дате - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь построить простой REST для покупок, мне нужно 2 способа.Во-первых, должны отображаться все покупки, отсортированные по дате. Во-первых, удаляются все покупки за указанную дату. Я сделал метод добавления и получения всех покупок.Теперь я застрял.

@Entity
@Table (name="purchase")
public class Purchase {

@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

 @Column(name = "name")
 private String name;

 @CreationTimestamp
 @Temporal(TemporalType.DATE)
 @Column(name="createat")
    private Date created;

 @Column(name="price")
 private BigDecimal price;


@Column(name="currency")
private String currency;
@Repository
public interface PurchaseRepository extends JpaRepository<Purchase, Long> {
}

@Service
public class PurchaseService {

    @Autowired
    private PurchaseRepository purchaseRepository;

    public void addPurchase(Purchase purchase) {
        purchaseRepository.save(purchase);
    }

    public List<Purchase> getAllPurchase() {

        List<Purchase> purchase = new ArrayList<>();
        purchaseRepository.findAll().forEach(purchase::add);
        return purchase;
    }
}

@RestController
public class PurchaseController {

    @Autowired
    private PurchaseService purchaseService;

    @PostMapping("/purchase")
    public void addPurchase(@RequestBody Purchase purchase) {
        purchaseService.addPurchase(purchase);
    }

    @RequestMapping("/purchase")
    public List<Purchase> getAllTopics() {
        return purchaseService.getAllPurchase();
    }
}

Не могу найти решение и реализацию для: Я ожидаю, что 1 метод сортирует мой Список, отсортированный по дате 2, метод, который удаляет все покупки за указанную дату

1 Ответ

1 голос
/ 29 мая 2019

Предполагается, что вы используете Spring в качестве аннотации, а также если вы используете SpringData в качестве уровня абстракции для связи с базой данных. Вы не должны расширять JPARepository, вместо этого вы должны расширять CrudRepository. Там вы можете определить запросы с помощью специального соглашения об именах или HQL.

Например:

@Repository
public interface PurchaseRepository extends CrudRepository<Purchase, Long> {
    List<Purchase> findAllOrderByDate();

    long deleteByDate(Date date);
}

Функция deleteByDate будет возвращать количество удаленных строк.

Как видите, вы можете определять запросы по их имени. Для получения дополнительной информации об этом: https://docs.spring.io/spring-data/data-commons/docs/2.1.8.RELEASE/reference/html/

Обновление: реализация является лишь примером, вы не можете скопировать и вставить его и использовать как есть. Как объясняется в упомянутой выше документации, вы можете определить запрос с помощью специального соглашения об именах, которое позволяет вам определять запросы семантическим способом, используя имена свойств из вашей сущности. В вашем случае это будет findAllOrderByCreatedAsc или findAllOrderByCreatedDesc То же самое относится к удалению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...