У меня есть @ Entity-s (Заказ), который может изменить их состояние. Каждое изменение состояния представляется с помощью объекта @Embeddable (OrderUpdate), добавляемого к коллекции @ElementCollection (Order.updates). Как я могу запросить заказы на основе самого последнего обновления?
Моя цель состоит в том, чтобы выбрать те Ордера, в которых состояние последнего обновления - СДЕЛАНО.
Заказ:
@Entity
public class Order {
@Id
@GeneratedValue
private UUID id;
@ElementCollection
private List<OrderUpdate> updates;
...
OrderUpdate:
@Embeddable
public class OrderUpdate {
@ManyToOne
private User host;
private String state;
@CreationTimestamp
private Timestamp timestamp;
...
OrderRepository:
@Repository
public interface OrderRepository extends CrudRepository<Order, UUID> {
@Query("select o from Order o where [o.updates.last.state TODO] = DONE")
Set<Order> findDone();
}