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。
我正在使用 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。