我正在使用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
。
答案 0 :(得分:0)
PanacheEntity
添加自己的ID:
@Id
@GeneratedValue
public Long id;
因此,您需要扩展PanacheEntityBase
,它的底层级别更高,并且没有id。