我对Hibernate很新,而且我不知道我是否采取了正确的方法,我试过谷歌搜索这个问题,但我只是成功地得到了<基本,实体>和基于xml的映射。
这是我的表格设置:
我正在尝试在父实体(table1)中拥有一个地图集合,该实体具有实体键和基本字符串值Map<Table2, String> table2Propertymapping
,其中String
值是来自枚举属性字段的值连接表table2_has_table1
,密钥是在连接表中拥有table2_idtable2
foreighn键的相应table2实体。
我在table1
实体
@ElementCollection
@MapKeyJoinColumn(name = "table2_idtable2")
@Column(name = "property")
@CollectionTable(name = "table2_has_table1", joinColumns = @JoinColumn(name = "table1_idtable1", nullable = false, updatable = false))
Map<Table2, String> table2Propertymapping;
这样可以成功填充地图,但在抓取过程中会删除连接表中的某些值。
注意:在我的真实数据库中,连接表中的外键与父主键具有相同的名称,因此例如table2_idtable2
被称为idtable2
我我不知道这可能会对地图产生什么影响。
那么使用连接表获取实体并将它们与连接表中的属性映射的正确方法是什么?感谢
答案 0 :(得分:0)
找到一个解决方案,问题出在我原始数据库中表之间关系的声明中,它允许连接表中的空值。确保所有外键与上图(由mysql工作台生成)相同后,上面的映射工作