Hibernate генерирует длинное значение идентификатора вместо UUID - PullRequest
0 голосов
/ 24 июня 2019

Я использую Quarkus (0,17). Я делаю сущность с panache для подключения на posgresql. Моя таблица имеет ключ uuid и определяется следующим образом:

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

Я установил спящий диалект в application.properties как он:

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.

1 Ответ

0 голосов
/ 24 июня 2019

PanacheEntity добавляет свой собственный идентификатор:

    @Id
    @GeneratedValue
    public Long id;

Итак, вам нужно расширить PanacheEntityBase, который является немного более низким уровнем и не имеет идентификатора.

...