我正在尝试在Spring Data JPA中使用Map
来处理存储设备数量记录的关系。
我按照guide来创建实体。
Meeting{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "meeting_id", updatable = false)
@JsonIgnore
private int id;
@ElementCollection
@MapKeyColumn(name = "equipment_type")
@MapKeyEnumerated(EnumType.STRING)
private Map<EquipmentType, Integer> equipment = new HashMap<>();
}
EquipmentType
是Enum
。
这是该属性的表格:
CREATE TABLE IF NOT EXISTS meeting_equipment (
meeting_id INTEGER NOT NULL REFERENCES meeting (meeting_id),
equipment_type VARCHAR(10) NOT NULL,
quantity INTEGER NOT NULL DEFAULT 0
);
尝试创建会议实体后,收到错误ERROR:column "meeting_meeting_id" of relation "meeting_equipment" does not exist
我可以知道这里有什么问题吗?
答案 0 :(得分:0)
您的table meeting_equipment与JPA的预期不符。
它有一个列meeting_id
,但您的JPA实现需要meeting_meeting_id
将列重命名为预期的meeting_meeting_id
或将映射配置为使用当前列名称。我认为这可能会成功:
@JoinTable(joinColumns={@JoinColumn(name="meeting_id")}
当然,如果你有很多像这样的情况并希望保持你的列名不变,你可能可以创建自己的命名策略。