如一个人有多个email地址
在person的pojo中可以设置一个email地址的Set集合
private Set<String> emails; |
而设置email表的时候,注意要采用符合主键的方式
CREATE TABLE email ( pid int not null, email varchar(50) not null, primary key (pid,email) );
|
容器映射,只生成一个pojo类Person,因此在生成映射时,也只生成一个映射文件,将有关email的处理,加入到Person的映射文件中。
<hibernate-mapping> <class name="org.liky.pojo.Person" table="person" catalog="testdb"> <id name="id" type="java.lang.Integer"> <column name="id" /> <generator class="native" /> </id> <property name="name" type="java.lang.String"> <column name="name" length="10" not-null="true" /> </property> <property name="age" type="java.lang.Integer"> <column name="age" /> </property> <!-- 表示在Person类中有一个名为emails的set集合,该集合中保存的数据对应email表 --> <set name="emails" table="email"> <!-- email表中有一个字段pid与person表关联 --> <key column="pid"></key> <!-- set集合中保存的数据类型为String ,与email表中的email字段对应 --> <element type="java.lang.String" column="email"></element> </set> </class> </hibernate-mapping> |
注意:
1·只有当email表为符合主键时,可以使用该配置
2.对于元素的类型必须为Java支持的数据类型,而不能是开发人员自行定义的类型
3.email表中必须有一个字段与person表对应。