将 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\"")
看看这个效果更好。
我正在尝试将@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\"")
看看这个效果更好。