Я хотел бы получить запрос, подобный этому:
@Query("select p from Purchase join p.customer c where c.username = :username and p.getPurchaseDate() >= :fromDate and p.getPurchaseDate() < :toDate")
List<Purchase> findByUsernameAndByDate(@Param("fromDate") Date fromDate, @Param("toDate") Date toDate, @Param("username") String username);
где getPurchaseDate () - это вызов метода внутри запроса. Я знаю, что не могу этого сделать, но мне интересно, есть ли другой способ сделать это. Проблема заключается в том, что дата покупки, возвращаемая методом получения, не является атрибутом класса «Покупка».
Это класс покупки, если необходимо:
@Entity
public class Purchase {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Integer purchaseId;
@ManyToOne
@JoinColumn(name = "customer_id")
private User customer;
@ElementCollection
@MapKeyEnumerated(value = EnumType.STRING)
@CollectionTable(name = "purchase_status")
@MapKeyColumn(name = "status")
@Column(name = "date")
private Map<PurchaseStatus, Date> statusTransitions = new HashMap<>();
.
.
.
Дата покупки находится внутри карты состояния переходов.