1

我正在使用 quarkus (0.17)。我用华丽的实体在 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.

4

1 回答 1

5

PanacheEntity添加自己的ID:

    @Id
    @GeneratedValue
    public Long id;

所以你需要的是扩展PanacheEntityBase它是一个更低级别的并且不带有id的。

于 2019-06-24T08:48:34.320 回答