У меня есть объект в Spring, который имеет первичный ключ Timestamp и HashMap со значениями String, Double.
Моя цель - выполнить запрос с использованием метки времени и вернуть объект с этой меткой времени вместе со значениями карты.
Я пробовал что-то вроде:
@Query("select s from Measurement s join s.map m where ?1 in (VALUE(m))")
Measurement findByTimestamp(ZonedDateTime timestamp);
Организация:
@Entity
@Table(name="measurement")
@EnableAutoConfiguration
public class Measurement {
@Id
@JsonProperty(value="timestamp") @NotNull
private ZonedDateTime timestamp;
@JsonAnySetter
@ElementCollection
private Map<String, Double> metrics = new HashMap<>();
@ElementCollection
private Map<String, Double> metricsView;
public ZonedDateTime getTimestamp() {
return timestamp;
}
Repository
@Repository
public interface MeasurementRepository extends JpaRepository<Measurement, Long> {
@Query("select s from Measurement s join s.map m where ?1 in (VALUE(m))")
Measurement findByTimestamp(ZonedDateTime timestamp);
}
Ожидается что-то вроде:
{
"dewPoint": 17.1,
"precipitation": 0,
"temperature": 27.5,
"timestamp": "2015-09-01T16:20:00.000Z"
}