Выборка данных из таблицы за определенный год
Есть такая таблица в базе, тип базы MS SQL
id int identity PK
work_week int
holiday datetime -дата выходного дня
holiday_type
creation_date datetime
correction_date datetime NULL
user_id int
Как я могу произвести выборку данных из таблицы за определенный год по полю holiday
Вот пример моего класса entity
@Entity
@Getter
@Setter
@Table(name = "holidays")
public class Holiday {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Integer id;
@Column(name = "work_week", nullable = false)
private Integer workWeek;
@Column(name = "holiday", nullable = false)
private Instant holiday;
@Convert(converter = DayTypeConverter.class)
@Column(name = "holiday_type", nullable = false)
private DayType holidayType;
@Column(name = "creation_date", nullable = false)
private Instant creationDate;
@Column(name = "correction_date")
private Instant correctionDate;
@Column(name = "user_id", nullable = false)
private Integer userId;
}
Использую стандартный spring data jpa Пример класса repository Я не совсем понимаю какой в него нужно добавить метод
@Repository
public interface HolidayRepository extends JpaRepository<Holiday, Integer> {
}
Опыт работы с JPA совсем небольшой, прошу помощи
Ответы (1 шт):
Не уверен что правильно написал, но вроде примерто так должно работать
public interface HolidayRepository extends JpaRepository<Holiday, Integer> {
List<Holiday> findByHolidayBetween(Date startDate, Date endDate);
}
Либо так
public interface HolidayRepository extends JpaRepository<Holiday, Integer> {
@Query("from Holiday where holiday > :startDate and holiday < :endDate")
List<Holiday> findByHolidayBetween(@Param("startDate") Date startDate,
@Param("endDate") Date endDate);
}
Это примеры по дате, если хочешь именно за год то можешь использовать функцию mysql YEAR(date) которая возвращает год из даты, и сравнивать уже с переданными параметрами или параметром. Примерно так:
public interface HolidayRepository extends JpaRepository<Holiday, Integer> {
@Query("from Holiday where YEAR(holiday) = :year")
List<Holiday> findByYear(@Param("year") Integer year);
}
Кстати @Repository не обязательная для репозиториев спринга, он сам знает где репозиторий.