Spring boot springBoot表中映射类型的列
我在SpringBoot中有一个表,其中有一列我希望是映射类型的。下面是模型Spring boot springBoot表中映射类型的列,spring-boot,Spring Boot,我在SpringBoot中有一个表,其中有一列我希望是映射类型的。下面是模型 @Entity @Table(name = "media") public class Media { @NotBlank private String url; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) Long id; @ElementCollection @CollectionTable(name="metaData",joinC
@Entity
@Table(name = "media")
public class Media {
@NotBlank
private String url;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;
@ElementCollection
@CollectionTable(name="metaData",joinColumns=@JoinColumn(name="media_id"))
Map<String, Object> metaData= new HashMap<>();
}
@实体
@表(name=“媒体”)
公共类媒体{
@不空白
私有字符串url;
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
长id;
@元素集合
@CollectionTable(name=“metaData”,joinColumns=@JoinColumn(name=“media\u id”))
映射元数据=新建HashMap();
}
我发现元数据类型有错误。错误是“集合元素映射的列元数据数量错误。您需要定义映射表的格式
@ElementCollection
@CollectionTable(name=“media\u meta\u data”,joinColumns=@JoinColumn(name=“media\u id”))
@MapKeyColumn(name=“meta_key”)
@列(name=“meta_值”)
映射元数据=新建HashMap();
MapKeyColumn
annotation在media\u meta\u data
中定义了对应于地图键的列
Column
annotation在media\u meta\u data
中定义了对应于地图值的列
在名为
Media\u id
的联接表中,还有另一个键用于关联Media
模型,您可以在CollectionTable
annotation中定义该联接表。您需要定义映射表应如何使用
@ElementCollection
@CollectionTable(name=“media\u meta\u data”,joinColumns=@JoinColumn(name=“media\u id”))
@MapKeyColumn(name=“meta_key”)
@列(name=“meta_值”)
映射元数据=新建HashMap();
MapKeyColumn
annotation在media\u meta\u data
中定义了对应于地图键的列
Column
annotation在media\u meta\u data
中定义了对应于地图值的列
还有另一个键用于连接名为
Media\u id
的联接表中的Media
模型,您在CollectionTable
注释中定义了该联接表。@Aashish请再次检查您在回答中是否使用了相同的代码。可能错误是另一回事now@Aashish请仔细检查您在回答中使用的代码是否相同。也许错误现在是另一回事了