如何解决在数据库中添加键和枚举的描述
我在Java中有一个小问题,但没有找到任何解决方案。 在类CustomerOrder中,我有一个Enum类型的列表。我想存储在数据库密钥和枚举的描述中。如何保存密钥和描述?
枚举:
@Entity
public enum MenuList{
SOUP(15.00),PIZZA_CHEESE_S(20.00),PIZZA_CHEESE_M(30.00),KEBAB(15.00),PASTA(18.00),FRENCH_FRIES(10.00),STEAK(25.00),SAUCE(3.00);
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
......}
分类客户订单
@Entity
public class CustomerOrder {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
private Integer noOfTable;
@OneToMany(mappedBy="customerOrder")
@Enumerated(EnumType.STRING)
private List<MenuList> productsOrdered;
private Double totalOrder;
@ManyToOne
....}
解决方法
看看AttributeConverter!
https://docs.oracle.com/javaee/7/api/javax/persistence/AttributeConverter.html
class MenuListConverter implements AttributeConverter<MenuList,String> {
private final static String DELIMITER = ":";
@Override
public String convertToDatabaseColumn(final MenuList menu) {
return String.format("%s%c%s",menu.name(),DELIMITER,"put your id here");
}
@Override
public String convertToEntityAttribute(final String value) {
if( value == null || value.isEmpty()) {
return null;
}
final String name = value.split(DELIMITER)[0];
return MenuList.valueOf(name);
}
}
然后,在您的实体中,
@Column(name = "MENU")
@Convert(converter = MenuListConverter.class)
private MenuList menu;
,
您可能使用HashMap。像
HashMap<String,String> map = new HashMap<String,String>() {{
put("SOUP","Classic noodle Soup");
put("FRENCH_FRIES","Regular french fries");
}};
然后您可以使用map.get(KEY);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。