Hibernate在映射Map属性时生成映射文件。需要注意的一些地方。下面是我的一个例子。
Java类如下
public class NameAndNumber { private Integer id; private String category; /* * 以 球队名称为键,球队编号为值。 */ private Map<String, String> NameNumber = new HashMap<>(); //部分代码省略
生成的映射文件如下:
需要修改成如下的样子:包括生成主键的方式、表名称、键值对应的列(注意:<map-key 中的列名称还不能取名为key,否则发生错误。)
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Generated 2017-9-17 12:59:20 by Hibernate Tools 3.5.0.Final --> <hibernate-mapping> <class name="com.zcd.exercise.map.NameAndNumber" table="NAME_AND_NUMBER"> <id name="id" type="java.lang.Integer"> <column name="ID" /> <generator class="identity" /> </id> <property name="category" type="java.lang.String"> <column name="CATEGORY" /> </property> <map name="NameNumber" table="NAME_NUMBER" lazy="true"> <key> <column name="ID" /> </key> <map-key type="java.lang.String"> <column name="NAME"></column> </map-key> <element type="java.lang.String"> <column name="NUMBER" /> </element> </map> </class> </hibernate-mapping>