1

列挙型のマッピングに @Enumerated アノテーションを使用しようとしましたが、次のエラーが発生しました。

Exception in thread "main" java.lang.ClassCastException: org.postgresql.util.PGobject cannot be cast to java.lang.String

私がすること:ポストグルで

create type "test_type" as enum ('test_1', 'test_2);

Javaで

public enum TestType{ test_1, test_2 }

@Entity @Table(name="test_table") public class TestTable { ...
@Enumerated(EnumType.STRING) @Column(name="col") private TestType col; ... }

4

1 に答える 1

3

JPAでは、列挙型はテキスト(列挙型の名前)または数値(列挙型の序数)として永続化できます。@Enumerated(EnumType.STRING)名前を永続化することを好むことを示します。したがって、データベースタイプはvarcharである必要があります。JPAプロバイダーはPostgreSQL列挙型を認識していません。

于 2012-08-27T17:46:04.120 に答える