Я новичок в Spring Framework.
Я использую hibernate-типы для приведения интервала PostgreSQL в Java Duration Object.
Для выбора все строки это работает нормально. Я создал модель данных для указанной таблицы c и использовал аннотацию TypeDef для отображения:
@Entity
@Table(name = "test")
@Typedef(
typeClass = PostgreSQLIntervalType.class,
defaultForType = Duration.class
)
@Getter @Setter
public class Test {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private Duration flightDuration;
}
Но теперь я хочу создать собственный собственный запрос. Я хочу выбрать все строки из таблицы Test, где flightDuration представляет собой RequestParam веб-службы. Например, в качестве базового c (реальный запрос гораздо более сложный и требует некоторых специальных postgres функций):
public interface TestRepository extends JpaRepository<Test, int> {
@Query( value = SELECT * FROM test t WHERE flight_duration = ?1 , nativeQuery = true )
List<Test> findByFlightDuration(Duration flightDuration);
}
Но вот моя проблема. Я не знаю, как использовать PostgreSQLIntervalType для приведения Длительности в интервал PostgreSQL.
Если я выполню запрос, как описано выше, я получу следующую ошибку:
org.postgresql.util.PSQLException: ERROR: cannot cast type bigint to interval
Так что, где я должен установить аннотацию (или что-то еще), как TypeCast в Тестовый класс, что Duration будет приведен к PostgreSQLIntervalType?