【发布时间】:2017-02-09 12:20:32
【问题描述】:
我正在寻找将 EnumSet 存储在类型 set 的 mysql 列中的方法:
@Data
@Entity
@Table(name = "ENTITY_TABLE")
public class Entity implements Serializable {
@Id
@GeneratedValue
@Column(nullable = false)
@NotNull
private String id;
@Column(name = "types")
private EnumSet<Type> types;
}
枚举类型定义如下:
public enum Type {
TYPE1,
TYPE2,
TYPE3,
TYPE4,
TYPE5
}
并且表定义如下:
CREATE TABLE `ENTITY_TABLE` (
`id` int(20) NOT NULL AUTO_INCREMENT,
`types` set('TYPE1','TYPE2','TYPE3','TYPE4','TYPE5') DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
并在表格中插入:
INSERT INTO ENTITY_TABLE (types) VALUE ( 'TYPE1','TYPE2')
【问题讨论】:
-
我对mysql set type不熟悉。 JPA 中对 @Enumerated 类型的支持是针对单列值。
-
鉴于您使用的是 JPA2.1,AttributeConverter 将是您的最佳选择。但是,您需要弄清楚在使用 JDBC 时如何使用 mysql set,这样您就知道在 AtrributeConverter 中要转换的内容和来自的内容