package de.ph87.data.series; import de.ph87.data.series.consumption.unit.Unit; import jakarta.persistence.Column; import jakarta.persistence.Embeddable; import jakarta.persistence.ManyToOne; import lombok.*; import java.io.Serializable; import java.time.ZonedDateTime; @Getter @ToString @Embeddable @EqualsAndHashCode @NoArgsConstructor public class SeriesIntervalKey implements Serializable { @NonNull @ManyToOne(optional = false) private Series series; @NonNull @Column(nullable = false, updatable = false, columnDefinition = "CHAR(1)") private Unit unit; @NonNull @Column(nullable = false, updatable = false) private ZonedDateTime aligned; public SeriesIntervalKey(@NonNull final Series series, @NonNull final Unit unit, @NonNull final ZonedDateTime unaligned) { this.series = series; this.unit = unit; this.aligned = unit.align(unaligned); } }