Hibernate生成Long ID值而不是UUID

时间:2019-06-24 08:35:36

标签: postgresql hibernate uuid quarkus

我正在使用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 :(得分:0)

PanacheEntity添加自己的ID:

    @Id
    @GeneratedValue
    public Long id;

因此,您需要扩展PanacheEntityBase,它的底层级别更高,并且没有id。