四、Map集合映射
Map集合属性不仅需要映射属性value,还需要映射属性key。这里假设Employee的name属性是唯一的,如下修改Employee.hbm.xml配置文件中的name属性,设置unique='true':
Java代码
<property name="name" unique="true"/>
<property name="name" unique="true"/> 实体类Department如下:
Java代码
public class Department {
private int id;
private String name;
private Map<String, Employee> emps;
//setter和getter方法
}
public class Department {
private int id;
private String name;
private Map<String, Employee> emps;
//setter和getter方法
} 修改Department.hbm.xml配置文件如下:
Xml代码
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.reiyen.hibernate.domain">
<class name="Department">
<id name="id">
<generator class="native" />
</id>
<property name="name" />
<map name="emps">
<key column="depart_id" />
<map-key type="string" column="name" />
<one-to-many class="Employee" />
</map>
</class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.reiyen.hibernate.domain">
<class name="Department">
<id name="id">
<generator class="native" />
</id>
<property name="name" />
<map name="emps">
<key column="depart_id" />
<map-key type="string" column="name" />
<one-to-many class="Employee" />
</map>
</class>
</hibernate-mapping> 将测试类下如下注释部分(即List部分)替换,改成Map重新进行测试:
Java代码
//List<Employee> list= new ArrayList<Employee>();
// list.add(employee2);
// list.add(employee1);
Map<String,Employee> emps = new HashMap<String,Employee>();
emps.put(employee1.getName(), employee1);
emps.put(employee2.getName(), employee2);
depart.setEmps(emps);
//List<Employee> list= new ArrayList<Employee>();
// list.add(employee2);
// list.add(employee1);
Map<String,Employee> emps = new HashMap<String,Employee>();
emps.put(employee1.getName(), employee1);
emps.put(employee2.getName(), employee2);
depart.setEmps(emps); 测试结果如下:
emps:{employee1 name1 =id=1 name=employee1 name1, employee2 name2 =id=2 name=employee2 name2}(红色标记部分为key部分)
数据库表中记录如下所示(未发生变化):
mysql> select * from department;
+----+-----------------+
| id | name |
+----+-----------------+
| 1 | department name |
+----+-----------------+
1 row in set (0.00 sec)
mysql> select * from employee;
+----+-----------------+-----------+
| id | name | depart_id |
+----+-----------------+-----------+
| 1 | employee1 name1 | 1 |
| 2 | employee2 name2 | 1 |
+----+-----------------+-----------+
2 rows in set (0.00 sec)
相关推荐
Commons Collections和Apache BeanUtils是Java开发中常用的两个库,它们为开发者提供了丰富的工具类和功能,使得处理集合对象和Bean属性变得更加便捷。这两个库在Java Web开发中扮演着重要角色,尤其是在构建MVC框架...
`<map-key>`用于映射集合中的键字段,通常在映射Map时使用。 5. **one-to-many** 和 **many-to-many**:这两个元素用于定义一对多和多对多关系。它们包含引用的实体类名和关联字段名。 6. **fetch**:这个属性用于...
#### 六、集合类(Collections)映射 - **持久化集合类(Persistent Collections)** - **映射集合**:集合类型的映射策略。 - **值集合和多对多关联**:多对多关系的映射。 - **一对多关联**:一对多关系的映射方法...
5. **集合映射 (Collections Mapping)** Hibernate 支持多种集合类型,如 List、Set、Map 等,它们可以作为一对多或多对多关系的容器。`@ElementCollection` 用于映射非实体类属性的集合,而 `@OrderColumn` 可以...
- **6.2.3 索引集合类 (Indexed collections)**:介绍索引集合的映射方式。 - **6.2.4 值集合于多对多关联 (Collections of values and many-to-many associations)**:讨论值集合和多对多关联的映射。 - **6.2.5...
6. 集合类(Collections)映射 6.1. 持久化集合类(Persistent collections) 6.2. 集合映射( Collection mappings ) 6.2.1. 集合外键(Collection foreign keys) 6.2.2. 集合元素(Collection elements) 6.2.3. ...
6. 集合类(Collections)映射 6.1. 持久化集合类(Persistent collections) 6.2. 集合映射( Collection mappings ) 6.2.1. 集合外键(Collection foreign keys) 6.2.2. 集合元素(Collection elements) 6.2.3. ...
1. **集合增强**:提供了一些对Java内置集合类的增强,如List、Set和Map的扩展,增加了新的操作和功能。 2. **迭代器工具**:提供了多种迭代器实现,包括反向迭代器、过滤迭代器等,便于遍历集合。 3. **转换器和...
6. 集合类(Collections)映射 6.1. 持久化集合类(Persistent collections) 6.2. 集合映射( Collection mappings ) 6.2.1. 集合外键(Collection foreign keys) 6.2.2. 集合元素(Collection elements) 6.2.3. ...
6. 集合类(Collections)映射 6.1. 持久化集合类(Persistent collections) 6.2. 集合映射( Collection mappings ) 6.2.1. 集合外键(Collection foreign keys) 6.2.2. 集合元素(Collection elements) 6.2.3. ...
6. 集合类(Collections)映射 6.1. 持久化集合类(Persistent collections) 6.2. 集合映射( Collection mappings ) 6.2.1. 集合外键(Collection foreign keys) 6.2.2. 集合元素(Collection elements) 6.2.3. ...
- `Map`:键值对集合。 - **排序**:通过 `<order-by>` 元素实现排序。 - **组件映射**:将实体的一个属性映射为另一个实体类,通常用于表示复杂的数据结构。 #### 十一、对象状态与识别 - **状态**: - ...
6. 集合类(Collections)映射 6.1. 持久化集合类(Persistent collections) 6.2. 集合映射( Collection mappings ) 6.2.1. 集合外键(Collection foreign keys) 6.2.2. 集合元素(Collection elements) 6.2.3. 索引...
- **作用**:Hibernate在处理复杂的数据结构时,经常会用到这些集合类,比如List、Set、Map等。该库的使用有助于提高Hibernate处理集合数据的效率和灵活性。 #### 6. commons-beanutils.jar - **描述**:Apache ...
6. 集合类(Collections)映射 6.1. 持久化集合类(Persistent collections) 6.2. 集合映射( Collection mappings ) 6.2.1. 集合外键(Collection foreign keys) 6.2.2. 集合元素(Collection elements) 6.2.3. ...
6. 集合类(Collections)映射 6.1. 持久化集合类(Persistent collections) 6.2. 集合映射( Collection mappings ) 6.2.1. 集合外键(Collection foreign keys) 6.2.2. 集合元素(Collection elements) 6.2.3. 索引...
7. 集合类(Collections)映射 7.1. 持久化集合类(Persistent collections) 7.2. 集合映射( Collection mappings ) 7.2.1. 集合外键(Collection foreign keys) 7.2.2. 集合元素(Collection elements) 7.2.3. ...
- Mappings for Collections:处理集合与数据库表的关系,如List、Set、Map等。 本教程旨在帮助开发者深入理解和掌握Hibernate,通过实践操作,可以提升数据库操作的效率,降低维护成本。学习Hibernate不仅能够...
- Hibernate支持多种集合类型,如List、Set、Map等,以及一对一、一对多、多对一、多对多的关系映射。 - 使用@OneToOne、@OneToMany、@ManyToOne、@ManyToMany注解定义关联。 7. **Criteria API** - Criteria ...
集合类(Collections)映射 6.1. 持久化集合类(Persistent Collections) 6.2. 映射集合(Mapping a Collection) 6.3. 值集合和多对多关联(Collections of Values and Many-To-Many Associations) 6.4. ...