比如客户和联系人
客户方属于一方,配置set属性:
package com.zking.crm.domain;
import java.util.HashSet;
import java.util.Set;
/**
* 客户基本信息
*
*
*/
public class CstCustomer implements java.io.Serializable {
private Long custId;
private String custName;
private Long custUserId;
private Long custCreateId;
// private String custSource;
private String custIndustry;
private String custLevel;
private String custLinkman;
private String custPhone;
private String custMobile;
//一对多,一个客户对应多个联系人
private Set<CstLinkman> cstLinkmans = new HashSet<CstLinkman>();
public CstCustomer() {
}
//客户来源
private BaseDict baseDictByCustSource = new BaseDict();
public BaseDict getBaseDictByCustSource() {
return baseDictByCustSource;
}
public void setBaseDictByCustSource(BaseDict baseDictByCustSource) {
this.baseDictByCustSource = baseDictByCustSource;
}
public Set<CstLinkman> getCstLinkmans() {
return cstLinkmans;
}
public void setCstLinkmans(Set<CstLinkman> cstLinkmans) {
this.cstLinkmans = cstLinkmans;
}
public Long getCustId() {
return custId;
}
public void setCustId(Long custId) {
this.custId = custId;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public Long getCustUserId() {
return custUserId;
}
public void setCustUserId(Long custUserId) {
this.custUserId = custUserId;
}
public Long getCustCreateId() {
return custCreateId;
}
public void setCustCreateId(Long custCreateId) {
this.custCreateId = custCreateId;
}
// public String getCustSource() {
// return custSource;
// }
// public void setCustSource(String custSource) {
// this.custSource = custSource;
// }
public String getCustIndustry() {
return custIndustry;
}
public void setCustIndustry(String custIndustry) {
this.custIndustry = custIndustry;
}
public String getCustLevel() {
return custLevel;
}
public void setCustLevel(String custLevel) {
this.custLevel = custLevel;
}
public String getCustLinkman() {
return custLinkman;
}
public void setCustLinkman(String custLinkman) {
this.custLinkman = custLinkman;
}
public String getCustPhone() {
return custPhone;
}
public void setCustPhone(String custPhone) {
this.custPhone = custPhone;
}
public String getCustMobile() {
return custMobile;
}
public void setCustMobile(String custMobile) {
this.custMobile = custMobile;
}
}
在客户的映射文件中配置:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- 配置表和类的映射关系 -->
<hibernate-mapping >
<!-- 将表和类对应起来
name:类名,写类的全限定名 (必须配置)
table:表名(必须配置)
catalog:使用mysql配置数据库名,可以不用配置
schema:使用oracle时候配置用户名
-->
<class name="com.zking.crm.domain.CstCustomer" table="cst_customer" >
<!-- 配置二级缓存 类级别的缓存 -->
<cache usage="read-write"/>
<!-- 主键映射
name:表中的主键对应的属性
type:属性的类型
-->
<id name="custId" type="java.lang.Long">
<!-- 对应表中主键字段 -->
<column name="cust_id"></column>
<!-- 主键生成策略
identity:自增主键生成策略
还有其它策略:uuid(唯一串),assgiend(手动指定)、sequence(用于oracle中的序列生成主键)
-->
<generator class="identity"></generator>
</id>
<!-- 普通属性和字段的映射
name:类中的属性
-->
<property name="custName" type="string">
<!-- 属性对应的字段 -->
<column name="cust_name"></column>
</property>
<property name="custUserId" type="java.lang.Long">
<column name="cust_user_id"></column>
</property>
<property name="custCreateId" type="java.lang.Long">
<column name="cust_create_id"></column>
</property>
<!-- <property name="custSource" type="string">
<column name="cust_source" length="32"></column>
</property> -->
<property name="custIndustry" type="string">
<column name="cust_industry" length="32"></column>
</property>
<property name="custLevel" type="string">
<column name="cust_level" length="32"></column>
</property>
<property name="custLinkman" type="string">
<column name="cust_linkman" length="64"></column>
</property>
<property name="custPhone" type="string">
<column name="cust_phone" length="64"></column>
</property>
<property name="custMobile" type="string">
<column name="cust_mobile" length="16"></column>
</property>
<!-- 一对多配置,一个客户对应多个联系人
name:一方中set的属性名
inverse="true":当前在客户中,关系维护由对方进行维护
-->
<set name="cstLinkmans" cascade="save-update,delete" inverse="true" fetch="select" lazy="true">
<key>
<!--多方中外键 -->
<column name="lkm_cust_id"></column>
</key>
<!-- class:指定多方类路径,即联系人类路径 -->
<one-to-many class="com.zking.crm.domain.CstLinkman"/>
</set>
<!-- 配置多对一 多个客户对应一个数据字典 -->
<many-to-one name="baseDictByCustSource" class="com.zking.crm.domain.BaseDict" fetch="join">
<column name="cust_source"></column>
</many-to-one>
</class>
</hibernate-mapping>
多对一:
在联系人中配置多对一关系:
package com.zking.crm.domain;
/**
* 客户联系人
* 学生
*
*/
public class CstLinkman implements java.io.Serializable {
private Long lkmId;
private String lkmName;
private String lkmGender;
private String lkmPhone;
private String lkmMobile;
private String lkmEmail;
private String lkmQq;
private String lkmPosition;
private String lkmPrimary;
private String lkmMemo;
//多对一,一个联系人属于一个客户
private CstCustomer cstCustomer;
public CstLinkman() {
}
public CstCustomer getCstCustomer() {
return cstCustomer;
}
public void setCstCustomer(CstCustomer cstCustomer) {
this.cstCustomer = cstCustomer;
}
public Long getLkmId() {
return lkmId;
}
public void setLkmId(Long lkmId) {
this.lkmId = lkmId;
}
public String getLkmName() {
return lkmName;
}
public void setLkmName(String lkmName) {
this.lkmName = lkmName;
}
public String getLkmGender() {
return lkmGender;
}
public void setLkmGender(String lkmGender) {
this.lkmGender = lkmGender;
}
public String getLkmPhone() {
return lkmPhone;
}
public void setLkmPhone(String lkmPhone) {
this.lkmPhone = lkmPhone;
}
public String getLkmMobile() {
return lkmMobile;
}
public void setLkmMobile(String lkmMobile) {
this.lkmMobile = lkmMobile;
}
public String getLkmEmail() {
return lkmEmail;
}
public void setLkmEmail(String lkmEmail) {
this.lkmEmail = lkmEmail;
}
public String getLkmQq() {
return lkmQq;
}
public void setLkmQq(String lkmQq) {
this.lkmQq = lkmQq;
}
public String getLkmPosition() {
return lkmPosition;
}
public void setLkmPosition(String lkmPosition) {
this.lkmPosition = lkmPosition;
}
public String getLkmPrimary() {
return lkmPrimary;
}
public void setLkmPrimary(String lkmPrimary) {
this.lkmPrimary = lkmPrimary;
}
public String getLkmMemo() {
return lkmMemo;
}
public void setLkmMemo(String lkmMemo) {
this.lkmMemo = lkmMemo;
}
}
在联系人映射文件配置:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- 配置表和类的映射关系 -->
<hibernate-mapping >
<!-- 将表和类对应起来
name:类名,写类的全限定名 (必须配置)
table:表名(必须配置)
catalog:使用mysql配置数据库名,可以不用配置
schema:使用oracle时候配置用户名
-->
<class name="com.zking.crm.domain.CstLinkman" table="cst_linkman" >
<!-- 主键采用自增 -->
<id name="lkmId" type="java.lang.Long">
<column name="lkm_id" />
<generator class="identity" />
</id>
<property name="lkmName" type="string">
<column name="lkm_name" length="16"></column>
</property>
<property name="lkmGender" type="string">
<column name="lkm_gender" length="1"></column>
</property>
<property name="lkmPhone" type="string">
<column name="lkm_phone" length="16"></column>
</property>
<property name="lkmMobile" type="string">
<column name="lkm_mobile" length="16"></column>
</property>
<property name="lkmEmail" type="string">
<column name="lkm_email" length="64"></column>
</property>
<property name="lkmQq" type="string">
<column name="lkm_qq" length="16"></column>
</property>
<property name="lkmPosition" type="string">
<column name="lkm_position" length="16"></column>
</property>
<property name="lkmMemo" type="string">
<column name="lkm_memo" length="512"></column>
</property>
<!--
多对一配置
name:指向一方属性名即客户属性名
class:客户属性的类型
-->
<many-to-one name="cstCustomer" class="com.zking.crm.domain.CstCustomer" lazy="false" >
<!-- 多方中外键 -->
<column name="lkm_cust_id"></column>
</many-to-one>
</class>
</hibernate-mapping>