如何查找按日期排序的List <object>

时间:2019-05-29 12:58:58

标签: java hibernate jpa

我正在尝试为购买构建简单的REST 我需要2种方法。 第一人应显示按日期排序的所有购买 Secondone删除指定日期的所有购买 我制定了一种添加和获取所有购买商品的方法。 现在我被卡住了。

@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();
    }
}

找不到以下解决方案和实现: 我希望有一种方法可以按日期对我的列表进行排序 2种方法删除指定日期的所有购买

1 个答案:

答案 0 :(得分:1)

假设您使用的是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/

更新:实现只是一个示例,您不能直接复制和粘贴并直接使用它。如所提到的文档中所述,您可以通过特殊的命名约定来定义查询,该约定允许您使用实体中的属性名称以语义方式定义两个查询。在您的情况下,删除将findAllOrderByCreatedAscfindAllOrderByCreatedDesc相同。