2

データベースに列挙型を持たせて Java に変換しようとしています。変換を行うために EnumUserType クラスを作成しましたが、PGobject クラスを認識しません。

public Object nullSafeGet(ResultSet rs, String[] names, SessionImplementor si, Object owner)
        throws HibernateException, SQLException {
    Object object = rs.getObject(names[0]);
    if (rs.wasNull()) {
        return null;
    }

    if (object instanceof PGobject) {
        //code doesn't reach this line
    }

    log.info(object.getClass()); // prints class org.postgresql.util.PGobject
    return null;
}

チェックしたところ、postgresql ドライバーのバージョンはまったく同じでした。この投稿を見ました: Java enum with Eclipselink。これは私も試す解決策ですが、私の主な質問は次のとおりです。明らかに同じクラスですが、なぜそのように認識されないのですか? 同じ名前とパッケージを持つ 2 つの異なるクラスを持つことはできますか? Postgres で列挙型を使用する必要がある場合、Java 列挙型に適切にマップするように修正するにはどうすればよいですか?

編集:

私はやろうとしました:

PGobject pg = (PGobject) object;

クラスキャスト例外をスローします。

org.postgresql.util.PGobject cannot be cast to org.postgresql.util.PGobject

ありがとう

4

1 に答える 1