Spring中的数据JPA关联

时间:2018-01-31 21:19:53

标签: jpa associations

我正在尝试在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<>();
}

EquipmentTypeEnum

这是该属性的表格:

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

我可以知道这里有什么问题吗?

1 个答案:

答案 0 :(得分:0)

您的table meeting_equipment与JPA的预期不符。 它有一个列meeting_id,但您的JPA实现需要meeting_meeting_id

将列重命名为预期的meeting_meeting_id或将映射配置为使用当前列名称。我认为这可能会成功:

@JoinTable(joinColumns={@JoinColumn(name="meeting_id")}

当然,如果你有很多像这样的情况并希望保持你的列名不变,你可能可以创建自己的命名策略。