我有以下实体类:
public class SportData {
//other attributes
@Column(name = "POINTS")
@ElementCollection
private Map<NBAEvent, Integer> points;
}
public enum NBAEvent {
THREE_POINT,
TWO_POINT,
FREE_THROW,
//..
}
当我使用ddl-auto: validate
生成相应的表时,它会创建NBAEvent(这是k)列,数据类型为整数(points_key int4 NOT NULL)
。
points_key CHARACTER VARYING(255)
这样的SQL,它会如何影响?我使用Spring引导和Spring JPA,DB是PostgreSQL。
答案 0 :(得分:0)
当地图的键是枚举时,您还必须添加MapKeyEnumerated
注释。
关键是用EnumType.STRING
类型声明它。
@ElementCollection
@CollectionTable(name = "colltable")
@MapKeyEnumerated(EnumType.STRING)
@Column(name="POINTS")
private Map<NBAEvent, Integer> map;
否则,根据javadocs,它默认为:javax.persistence.EnumType.ORDINAL
。这会在创建ddl时产生整数表。
您可能还需要上面的@CollectionTable
注释。