Как я могу отсортировать список <Object>CRUD репозиторий - PullRequest
0 голосов
/ 30 мая 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. метод, который удаляет все покупки за указанную дату

Ответы [ 2 ]

0 голосов
/ 30 мая 2019

Я понял

long deleteByCreated(Date date);
@Transactional
public long deleteAllByDate(Date date){
    return purchaseRepository.deleteByCreated(date);
}
@RequestMapping(method=RequestMethod.DELETE, value="/purchasess/{date}")
    public long findAllByCreatedBetween(@DateTimeFormat(pattern="yyyy-MM-dd") 
@PathVariable  Date date){
        return purchaseService.deleteAllByDate(date);
    }
0 голосов
/ 30 мая 2019

В этих случаях вы можете использовать функции Spring Data JPA.

Добавьте следующие методы в PurchaseRepository:

  1. List<Purchase> findAllByOrderByCreatedAsc();
  2. long deleteByCreated(Date created);

И, наконец, Spring сгенерирует соответствующий запрос на основе имени метода.

...