在 PostgreSQL 查询中读取 'Time without time zone' 类型为 String(Character varying) 类型

Read 'Time without time zone' type as String(Character varying) type in PostgreSQL query

我在 java

中有以下 HQL 查询
try (Session context = HibernateUtil.getLocalSessionFactory().openSession()) {
    List list = null;
    String queryText = "select rf.Name, to_char(rf.StartDateTime,'YYYY/MM/DD HH24:MI:SS'), rf.Duration from RecordFile as rf";
    var query = context.createQuery(queryText);
    list = query.list();
}
var query = context.createQuery(queryText.toString());

类型有:

rf.Name -> Character varying (20),
rf.StartDateTime -> Timestamp without time zone,
rf.Duration -> Time without time zone

我需要将三个字段中的每一个都读取为字符串。 名称是字符串。 StartDateTime 通过 to_char 方法转换为 String。但我无法将持续时间字段转换为字符串。持续时间在 DB 中显示为 00:05:08,即 00 小时 05 分 08 秒。

有人知道吗?

感谢

更新

其实还有一个class喜欢

public MyClass
{
    MyClass(String name, String startDateTime, String Duration)
     {
       .
       .
       .
     }
}

查询输出调用此 class。这就是为什么我需要将 Date 转换为 String 并且不允许更改数据库的原因。

主要查询文本为:

String queryText = "select new PackageName.MyClass(rf.Name, to_char(rf.StartDateTime,'YYYY/MM/DD HH24:MI:SS'), rf.Duration) from RecordFile as rf";

更改您的查询文字以使用 to_char

select rf.Name, to_char(rf.StartDateTime,'YYYY/MM/DD HH24:MI:SS'), 
       to_char(rf.Duration, 'HH24:MI:SS') as duration
from RecordFile as rf;

如果你想保留小数部分,那么只需

select rf.Name, to_char(rf.StartDateTime,'YYYY/MM/DD HH24:MI:SS'), 
       rf.Duration::text
from RecordFile as rf;

不相关,但我认为 time 不是持续时间的正确数据类型。也许使用 interval?