1

quarkus (0.17) を使用しています。posgresql で接続するために panache でエンティティを作成します。私のテーブルには uuid キーがあり、次のように定義されています。

 CREATE TABLE public.instruments
(
    id uuid,
    name character varying(50)
)

application.properties に hibernate 方言を次のように設定しました。

quarkus.hibernate-orm.dialect =  org.hibernate.dialect.PostgreSQL95Dialect

私のエンティティは次のように定義されています:

@Entity
@Table(name="instruments")
public class Instrument extends PanacheEntity{

    @Id
    @GeneratedValue( generator = "UUID" )
    @GenericGenerator(
        name = "UUID",
        strategy = "org.hibernate.id.UUIDGenerator",
        parameters = {
            @Parameter(
                name = "uuid_gen_strategy_class",
                value = "org.hibernate.id.uuid.CustomVersionOneStrategy"
            )
        }
    )
    @Type(type="pg-uuid")   
    public UUID id;
    public String name; 

}

実行時にエンティティを永続化しようとすると、java.lang.IllegalArgumentException: Can not set java.util.UUID field xxxx.entity.Instrument.id to java.lang.Long.

4

1 に答える 1

5

PanacheEntity独自の ID を追加します。

    @Id
    @GeneratedValue
    public Long id;

したがって、必要なのは拡張することですPanacheEntityBase。これはもう少し低レベルで、ID は付属していません。

于 2019-06-24T08:48:34.320 に答える