Как отобразиться, тип столбца Интервала PostgreSQL в В спящем режиме?

Под PostgreSQL я использую PersistentDuration поскольку отображение между sql вводит интервал и продолжительность, но это не работает.

Другой пользователь нашел ту же проблему, и идите с его собственным классом:

public void nullSafeSet(PreparedStatement statement, Object value, int index) 
        throws HibernateException, SQLException { 
    if (value == null) { 
        statement.setNull(index, Types.OTHER); 
    } else { 
        Long interval = ((Long) value).longValue(); 
        Long hours = interval / 3600; 
        Long minutes = (interval - (hours * 3600)) / 60; 
        Long secondes = interval - (hours * 3600) - minutes * 60; 
            statement.setString(index, "'"+ hours +":" 
                    + intervalFormat.format(minutes) + ":" 
                    + intervalFormat.format(secondes)+"'"); 

    } 
}

Но это не работает с реальным форматом, потому что это предполагает, что шаблон интервала только "hh:mm:ss". Дело не в этом: посмотрите

Здесь несколько реальных примеров я должен проанализировать от базы данных:

1 day 00:29:42
00:29:42
1 week 00:29:42
1 week 2 days  00:29:42
1 month 1 week 2 days  00:29:42
1 year 00:29:42
1 decade 00:29:42

http://www.postgresql.org/docs/current/interactive/datatype-datetime.html

У Вас есть чистое решение?

13
задан Vlad Mihalcea 29 August 2019 в 06:46
поделиться

1 ответ

Согласно ссылке у вас должен быть день, за которым следуют часы:минуты:секунды. Таким образом, изменяя код на что-то вроде следующего, предполагая, что вам никогда не понадобится больше 23 часов 59 минут в интервале.

statement.setString(index, "'0 "+ hours +":" 
+ intervalFormat.format(minutes) + ":" 
+ intervalFormat.format(secondes)+"'"); 

Я не могу проверить этот код, так как у меня не установлен PostGreSql. Для другого обсуждения этого же вопроса смотрите следующую ссылку, хотя вам придется изменить код, предоставленный для работы с секундами. Однако это не должно быть большой проблемой.

https://forum.hibernate.org/viewtopic.php?p=2348558&sid=95488ce561e7efec8a2950f76ae4741c

0
ответ дан 2 December 2019 в 01:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: