将 JPA @Enumerated 值保存到数据库中

Saving JPA @Enumerated value into the database

我正在尝试将@Enumerated 值保存到数据库中:

@Entity
public class Macronutrient {

    public enum Group {
        CARBOHYDRATE, PROTEIN, FAT
    }

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Size(min = 3, max = 255)
    @NotBlank
    @Column(unique = true)
    private String name;

    @Enumerated(EnumType.STRING)
    private Group group;

    //getters and setters

}

我正在发送 PATCH 请求以修改现有的常量营养素:

PATCH /macronutrients
{
    "id": 1,
    "name": "Macronutrient",
    "group": "CARBOHYDRATE"
}

负责处理更新的代码:

public Macronutrient patchMacronutrient(Macronutrient macronutrient) {
    ...
    if (Objects.nonNull(macronutrient.getGroup())) {
        existingMacronutrient.setGroup(macronutrient.getGroup());
    }
    ...
}

我得到的回应: 错误:“组”处或附近的语法错误

Hibernate: 
    update
        public.macronutrient 
    set
        
    group=?,
    name=? where
        id=?

如果我不在 Macronutrient 上设置 group 属性,那么它会正确保存。 请帮忙!

一个可能的原因可能是 'group' 是一个保留字(想想“group by”表达式)。 您可以尝试这样做:将列名称括在反引号

@Column(name="`group`")
private Group group;

在 JPA 2.0 中,语法有点不同:

@Column(name="\"group\"")

看看这个效果更好。