hibernate5 一对多映射中set集合的实例化
2018-01-25 10:14
288 查看
数据库中有两张表,一张客户表,一张字典表(存放一些常量值,如:客户所属行业:“教育、医疗、金融…”,客户来源:“网络营销,电话营销”,客户的级别:“普通客户,vip客户,vip中p客户”)。客户表与字典表存在外键关联关系,如下图。
字典表和客户表的实体类如下:
字典表和客户表的映射文件如下:
测试:通过查询字典表,发现字典表中的set集合框架已经帮我们实例化了,而且也装入了相应的customer对象。
总结:hibernate5 一对多映射,我们没有手动将实体对象中的set集合实例化(如下所示:),框架也会自动实例化实体对象中的set集合,并装入对应的值。
字典表和客户表的实体类如下:
public class Dict { //(简洁省略普通字段) //(关联字段)一对多 // 注意到一个细节是,这里多方的set集合我们没有选择手动初始化 @JSONField(serialize = false)//FastJson,取消字段的循环引用 private Set<Customer> sourceSet; @JSONField(serialize = false) private Set<Customer> industrySet; @JSONField(serialize = false) private Set<Customer> levelSet; //下面是setter和getter ... }
public class Customer { //(简洁省略普通字段) // 外键字段(javaBean对象中,不出现外键字段由实体对象取代) // private String cust_source; // private String cust_industry; // private String cust_level; //外键实体,用来代替外键字段 //Customer 与 Dict 有三条一对多的关联 换句话说: Customer有三个外键 private Dict source; private Dict industry; private Dict level; //下面是setter和getter ... }
字典表和客户表的映射文件如下:
<hibernate-mapping> <class name="me.arjenlee.domain.Dict" table="base_dict"> <id name="dict_id" column="dict_id"> <generator class="uuid"/> </id> <property name="dict_type_code" column="dict_type_code"/> <property name="dict_type_name" column="dict_type_name"/> <property name="dict_item_name" column="dict_item_name"/> <property name="dict_item_code" column="dict_item_code"/> <property name="dict_sort" column="dict_sort"/> <property name="dict_enable" column="dict_enable"/> <property name="dict_memo" column="dict_memo"/> <!-- 配置一方 --> <!-- 一方: source --> <set name="sourceSet" inverse="true"> <key column="cust_source"/> <one-to-many class="me.arjenlee.domain.Customer"/> </set> <!-- 一方: industry --> <set name="industrySet" inverse="true"> <key column="cust_industry"/> <one-to-many class="me.arjenlee.domain.Customer"/> </set> <!-- 一方: level --> <set name="levelSet" inverse="true"> <key column="cust_level"/> <one-to-many class="me.arjenlee.domain.Customer"/> </set> </class> </hibernate-mapping>
<hibernate-mapping> <class name="me.arjenlee.domain.Customer" table="cst_customer"> <id name="cust_id" column="cust_id"> <generator class="native"/> </id> <property name="cust_name" column="cust_name"/> <property name="cust_user_id" column="cust_user_id"/> <property name="cust_create_id" column="cust_create_id"/> <property name="cust_linkman" column="cust_linkman"/> <property name="cust_phone" column="cust_phone"/> <property name="cust_mobile" column="cust_mobile"/> <property name="filePath" column="filePath"/> <!-- 外键 多对一 --> <many-to-one name="source" class="me.arjenlee.domain.Dict" column="cust_source"/> <many-to-one name="industry" class="me.arjenlee.domain.Dict" column="cust_industry"/> <many-to-one name="level" class="me.arjenlee.domain.Dict" column="cust_level"/> </class> </hibernate-mapping>
测试:通过查询字典表,发现字典表中的set集合框架已经帮我们实例化了,而且也装入了相应的customer对象。
public class DictDaoImpl extends HibernateDaoSupport implements DictDao { @Override public List<Dict> findByCode(String dict_type_code) { List<Dict> result= (List<Dict>)this.getHibernateTemplate().find("from Dict where dict_type_code = ?", dict_type_code); return result; } }
总结:hibernate5 一对多映射,我们没有手动将实体对象中的set集合实例化(如下所示:),框架也会自动实例化实体对象中的set集合,并装入对应的值。
private Set<Customer> sourceSet; private Set<Customer> industrySet; private Set<Customer> levelSet;
相关文章推荐
- Hibernate映射 --- 集合映射(Set List Map )
- Hibernate常见的集合映射主要有Set,List,Array,Map,Bag等
- hibernate中一对多映射(set集合中存放的原生数据类型,而不是实体)
- hibernate集合映射set和list配置总结
- Hibernate映射集合属性1__Set集合
- Hibernate常见的集合映射主要有Set,List,Array,Map,Bag .
- Hibernate之映射集合(值类型的set,bag,idbag,list和map)
- hibernate的list集合映射(与set区别)
- Hibernate的集合映射(Set、List、Array、Map、Bag)
- Hibernate常见集合映射(Set,List Array,Map,Bag)
- Hibernate之映射值类型集合(映射set)
- Hibernate的集合映射(Set、List、Array、Map、Bag)
- Hibernate Set集合映射简单例子
- Hibernate 多表关联映射- Hibernate中使用的集合类型(set,list,array,bag,map)
- Hibernate 多表关联映射- Hibernate中使用的集合类型(set,list,array,bag,map)
- hibernate4 映射集合属性 set
- Hibernate常见的集合映射主要有Set,List,Array,Map,Bag
- Hibernate的Set,List,Map集合映射,数组映射
- Hibernate 多表关联映射- Hibernate中使用的集合类型(set,list,array,bag,map)
- Hibernate 多表关联映射- Hibernate中使用的集合类型(set,list,array,bag,map)