Hibernate 生成一个 Long id 值而不是 UUID

Hibernate generate a Long id value instead of UUID

我正在使用 quarkus (0.17)。我用华丽的实体在 posgresql 上进行连接。我的 table 有一个 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

PanacheEntity 添加自己的id:

    @Id
    @GeneratedValue
    public Long id;

因此,您需要扩展 PanacheEntityBase,它的级别较低,并且没有 id。