【问题标题】:org.postgresql.util.PGobject cannot be cast to java.lang.Stringorg.postgresql.util.PGobject 不能转换为 java.lang.String
【发布时间】:2014-06-24 03:01:27
【问题描述】:

尝试学习如何使用 PostgeSQL 数据库,以及带有 ENUM 的 JAVA,但在转换时遇到了一些问题。

这是我的 sql:

CREATE TYPE enum_created_from AS ENUM ('CHAT', 'WEB');
ALTER TABLE contact ADD COLUMN created_from enum_created_from;
UPDATE contact SET created_from='WEB';

枚举文件:

public enum ContactCreatedFrom {
    WEB, CHAT;
}

JAVA 实体文件:

@Column(name = "CREATED_FROM")
@Enumerated(EnumType.STRING)
private ContactCreatedFrom createdFrom;

偏离路线的 getter 和 setter。

使用 JUnit 的@Test 文件

@Test
public void testContactCreatedFrom() 
{
    try
    {
        @SuppressWarnings("unchecked")
        List<Contact> contacts = (List<Contact>) db.createQuery("from Contact where id between 20 and 25").list();
        for (Contact c : contacts)
        {
            System.out.println("Name: " + c.getName());
            System.out.println ("Enum: " + c.getCreatedFrom());
        }
    } catch (Exception e)
    {
        System.out.println("Exception: " + e);
    }
}

我仍然得到异常:

Exception: java.lang.ClassCastException: org.postgresql.util.PGobject cannot be cast to java.lang.String

谁能告诉我哪里错了。

问候

【问题讨论】:

标签: java hibernate postgresql jsf junit


【解决方案1】:

我从这里的 Postgres 文档中得到了解释:https://jdbc.postgresql.org/documentation/publicapi/org/postgresql/util/PGobject.html。然后我将 PGObject 转换为 PGObject,然后使用 object.getValue() 作为其字符串值。这似乎解决了我的问题。 示例:

import org.postgresql.util.PGobject;

public static String pgObjectToString(PGobject object){
        if(null==object) return null;
        String s = object.getValue();
        return s;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-10
    • 2015-05-18
    • 2011-10-27
    • 2019-10-19
    • 2018-01-23
    • 2011-05-09
    • 1970-01-01
    • 2013-08-27
    相关资源
    最近更新 更多