hibenate一对多

比如客户和联系人
客户方属于一方,配置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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值