第一张表:投票主题(VoteTheme)
实体:
package com.topsoft.icf.domain.entities; import java.util.Date; import java.util.Set; /** * Created by IntelliJ IDEA. * User: * Date: 2010-4-28 * Time: 16:03:48 * To change this template use File | Settings | File Templates. * @hibernate.mapping default-lazy="false" * @hibernate.meta attribute="class-description" value="投票主题" * @hibernate.class table="JL_WLTPZT" */ public class VoteTheme { private Long id;//标识 private String theme;//主题 private Date begintime;//开始时间 private Date endtime;//截止时间 private int state=0;//0:起草状态 private int type;//类型 private Date releasetime;//发布时间 private Long userid;//创建人标识 private String username;//创建人名称 private Long orgid;//创建机构标识 private String orgname;//创建的机构名称 private Long parentorgid;//创建上级机构 private Long morgid;//管理机关 private Date createtime;//创建时间 private String remark;//备注说明 private Set voteItem;//投票项 public final static int QC=0,//起草 FB=1,//发布 GB=2,//关闭 SC=3;//作废 public final static int DAXBJM=1,//单选不记名 DAXJM=2,//单选记名 DOXBJM=3,//多选不记名 DOXJM=4;//多选记名 /** * @hibernate.id generator-class="sequence" column="BS" * @hibernate.meta attribute="field-description" value="标识" * @hibernate.generator-param name="sequence" value="SEQ_JL" */ public Long getId() { return id; } public void setId(Long id) { this.id = id; } /** * @hibernate.property column="ZTMC" type="string" length="300" not-null="true" * @hibernate.meta attribute="field-description" value="主题名称" */ public String getTheme() { return theme; } public void setTheme(String theme) { this.theme = theme; } /** * @hibernate.property column="KSSJ" type="timestamp" not-null="false" * @hibernate.meta attribute="field-description" value="开始时间" */ public Date getBegintime() { if(begintime==null) return null; else return (Date)begintime.clone(); } public void setBegintime(Date begintime) { if(begintime==null) this.begintime=null; else this.begintime = (Date)begintime.clone(); } /** * @hibernate.property column="JZSJ" type="timestamp" not-null="false" * @hibernate.meta attribute="field-description" value="截止时间" */ public Date getEndtime() { if(endtime==null)return null; else return (Date)endtime.clone(); } public void setEndtime(Date endtime) { if(endtime==null) this.endtime=null; else this.endtime = (Date)endtime.clone(); } /** * @hibernate.property column="ZT" type="int" not-null="true" * @hibernate.meta attribute="field-description" value="状态" */ public int getState() { return state; } public void setState(int state) { this.state = state; } /** * @hibernate.property column="LX" type="int" not-null="true" * @hibernate.meta attribute="field-description" value="类型" */ public int getType() { return type; } public void setType(int type) { this.type = type; } /** * @hibernate.property column="FBSJ" type="timestamp" not-null="false" * @hibernate.meta attribute="field-description" value="发布时间" */ public Date getReleasetime() { if(releasetime==null)return null; else return (Date)releasetime.clone(); } public void setReleasetime(Date releasetime) { if(releasetime==null) this.releasetime=null; else this.releasetime = (Date)releasetime.clone(); } /** * @hibernate.property column="CJRBS" type="long" not-null="true" * @hibernate.meta attribute="field-description" value="创建人标识" */ public Long getUserid() { return userid; } public void setUserid(Long userid) { this.userid = userid; } /** * @hibernate.property column="CJRMC" type="string" length="100" not-null="false" * @hibernate.meta attribute="field-description" value="创建人名称" */ public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } /** * @hibernate.property column="CJJGBS" type="long" not-null="false" * @hibernate.meta attribute="field-description" value="创建机构标识" */ public Long getOrgid() { return orgid; } public void setOrgid(Long orgid) { this.orgid = orgid; } /** * @hibernate.property column="CJJGMC" type="string" length="200" not-null="false" * @hibernate.meta attribute="field-description" value="创建机构名称" */ public String getOrgname() { return orgname; } public void setOrgname(String orgname) { this.orgname = orgname; } /** * @hibernate.property column="CJSJJGBS" type="long" not-null="false" * @hibernate.meta attribute="field-description" value="创建上级机构标识" */ public Long getParentorgid() { return parentorgid; } public void setParentorgid(Long parentorgid) { this.parentorgid = parentorgid; } /** * @hibernate.property column="CJDWBS" type="long" not-null="false" * @hibernate.meta attribute="field-description" value="创建单位标识" */ public Long getMorgid() { return morgid; } public void setMorgid(Long morgid) { this.morgid = morgid; } /** * @hibernate.property column="CJSJ" type="timestamp" not-null="false" * @hibernate.meta attribute="field-description" value="创建时间" */ public Date getCreatetime() { if(createtime==null) return null; return (Date) createtime.clone(); } public void setCreatetime(Date createtime) { if(createtime==null) this.createtime = null; else this.createtime = (Date)createtime.clone(); } /** * @hibernate.property column="BZSM" type="string" length="600" not-null="false" * @hibernate.meta attribute="field-description" value="备注说明" */ public String getRemark() { return remark; } public void setRemark(String remark) { this.remark = remark; } /** * @hibernate.collection-one-to-many class="com.topsoft.icf.domain.entities.VoteItem" * @hibernate.collection-key column="WLTPZT_BS" * @hibernate.set name="voteItem" table="JL_WLTPX" * lazy="false" cascade="all-delete-orphan" order-by="bs asc" sort="unsorted" */ public Set getVoteItem() { return voteItem; } public void setVoteItem(Set voteItem) { this.voteItem = voteItem; } public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; VoteTheme voteTheme = (VoteTheme) o; if (state != voteTheme.state) return false; if (type != voteTheme.type) return false; if (begintime != null ? !begintime.equals(voteTheme.begintime) : voteTheme.begintime != null) return false; if (createtime != null ? !createtime.equals(voteTheme.createtime) : voteTheme.createtime != null) return false; if (endtime != null ? !endtime.equals(voteTheme.endtime) : voteTheme.endtime != null) return false; if (id != null ? !id.equals(voteTheme.id) : voteTheme.id != null) return false; if (morgid != null ? !morgid.equals(voteTheme.morgid) : voteTheme.morgid != null) return false; if (orgid != null ? !orgid.equals(voteTheme.orgid) : voteTheme.orgid != null) return false; if (orgname != null ? !orgname.equals(voteTheme.orgname) : voteTheme.orgname != null) return false; if (parentorgid != null ? !parentorgid.equals(voteTheme.parentorgid) : voteTheme.parentorgid != null) return false; if (releasetime != null ? !releasetime.equals(voteTheme.releasetime) : voteTheme.releasetime != null) return false; if (remark != null ? !remark.equals(voteTheme.remark) : voteTheme.remark != null) return false; if (theme != null ? !theme.equals(voteTheme.theme) : voteTheme.theme != null) return false; if (userid != null ? !userid.equals(voteTheme.userid) : voteTheme.userid != null) return false; if (username != null ? !username.equals(voteTheme.username) : voteTheme.username != null) return false; return true; } public int hashCode() { int result = id != null ? id.hashCode() : 0; result = 31 * result + (theme != null ? theme.hashCode() : 0); result = 31 * result + (begintime != null ? begintime.hashCode() : 0); result = 31 * result + (endtime != null ? endtime.hashCode() : 0); result = 31 * result + state; result = 31 * result + type; result = 31 * result + (releasetime != null ? releasetime.hashCode() : 0); result = 31 * result + (userid != null ? userid.hashCode() : 0); result = 31 * result + (username != null ? username.hashCode() : 0); result = 31 * result + (orgid != null ? orgid.hashCode() : 0); result = 31 * result + (orgname != null ? orgname.hashCode() : 0); result = 31 * result + (parentorgid != null ? parentorgid.hashCode() : 0); result = 31 * result + (morgid != null ? morgid.hashCode() : 0); result = 31 * result + (createtime != null ? createtime.hashCode() : 0); result = 31 * result + (remark != null ? remark.hashCode() : 0); return result; } }
hibernate映射文件:
<?xml version="1.0" encoding="gb2312"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping default-lazy="false" > <class name="com.topsoft.icf.domain.entities.VoteTheme" table="JL_WLTPZT" > <meta attribute="class-description">投票主题</meta> <id name="id" column="BS" type="java.lang.Long" > <meta attribute="field-description">标识</meta> <generator class="sequence"> <param name="sequence">SEQ_JL</param> <!-- To add non XDoclet generator parameters, create a file named hibernate-generator-params-VoteTheme.xml containing the additional parameters and place it in your merge dir. --> </generator> </id> <property name="theme" type="string" update="true" insert="true" column="ZTMC" length="300" not-null="true" > <meta attribute="field-description">主题名称</meta> </property> <property name="begintime" type="timestamp" update="true" insert="true" column="KSSJ" not-null="false" > <meta attribute="field-description">开始时间</meta> </property> <property name="endtime" type="timestamp" update="true" insert="true" column="JZSJ" not-null="false" > <meta attribute="field-description">截止时间</meta> </property> <property name="state" type="int" update="true" insert="true" column="ZT" not-null="true" > <meta attribute="field-description">状态</meta> </property> <property name="type" type="int" update="true" insert="true" column="LX" not-null="true" > <meta attribute="field-description">类型</meta> </property> <property name="releasetime" type="timestamp" update="true" insert="true" column="FBSJ" not-null="false" > <meta attribute="field-description">发布时间</meta> </property> <property name="userid" type="long" update="true" insert="true" column="CJRBS" not-null="true" > <meta attribute="field-description">创建人标识</meta> </property> <property name="username" type="string" update="true" insert="true" column="CJRMC" length="100" not-null="false" > <meta attribute="field-description">创建人名称</meta> </property> <property name="orgid" type="long" update="true" insert="true" column="CJJGBS" not-null="false" > <meta attribute="field-description">创建机构标识</meta> </property> <property name="orgname" type="string" update="true" insert="true" column="CJJGMC" length="200" not-null="false" > <meta attribute="field-description">创建机构名称</meta> </property> <property name="parentorgid" type="long" update="true" insert="true" column="CJSJJGBS" not-null="false" > <meta attribute="field-description">创建上级机构标识</meta> </property> <property name="morgid" type="long" update="true" insert="true" column="CJDWBS" not-null="false" > <meta attribute="field-description">创建单位标识</meta> </property> <property name="createtime" type="timestamp" update="true" insert="true" column="CJSJ" not-null="false" > <meta attribute="field-description">创建时间</meta> </property> <property name="remark" type="string" update="true" insert="true" column="BZSM" length="600" not-null="false" > <meta attribute="field-description">备注说明</meta> </property> <set name="voteItem" table="JL_WLTPX" lazy="false" cascade="all-delete-orphan" order-by="bs asc" sort="unsorted" > <key column="WLTPZT_BS" > </key> <one-to-many class="com.topsoft.icf.domain.entities.VoteItem" /> </set> <!-- To add non XDoclet property mappings, create a file named hibernate-properties-VoteTheme.xml containing the additional properties and place it in your merge dir. --> </class> </hibernate-mapping>
第二张表:投票项(VoteItem)
实体:
package com.topsoft.icf.domain.entities; /** * Created by IntelliJ IDEA. * User: shiduanjun * Date: 2010-4-28 * Time: 16:04:08 * To change this template use File | Settings | File Templates. * * @hibernate.mapping default-lazy="false" * @hibernate.meta attribute="class-description" value="投票项" * @hibernate.class table="JL_WLTPX" */ public class VoteItem implements Comparable { private Long id;//标识 private String itemname;//项名 private Long num;//得票数 private VoteTheme voteTheme;//投票主题 /** * @hibernate.id generator-class="sequence" column="BS" * @hibernate.meta attribute="field-description" value="标识" * @hibernate.generator-param name="sequence" value="SEQ_JL" */ public Long getId() { return id; } public void setId(Long id) { this.id = id; } /** * @hibernate.property column="XM" type="string" length="150" not-null="true" * @hibernate.meta attribute="field-description" value="项名" */ public String getItemname() { return itemname; } public void setItemname(String itemname) { this.itemname = itemname; } /** * @hibernate.property column="DPS" type="long" not-null="false" * @hibernate.meta attribute="field-description" value="得票数" */ public Long getNum() { return num; } public void setNum(Long num) { this.num = num; } /** * @hibernate.many-to-one class="com.topsoft.icf.domain.entities.VoteTheme" * @hibernate.meta attribute="field-description" value="投票主题" * @hibernate.column name="WLTPZT_BS" */ public VoteTheme getVoteTheme() { return voteTheme; } public void setVoteTheme(VoteTheme voteTheme) { this.voteTheme = voteTheme; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; VoteItem voteItem = (VoteItem) o; if (id != null ? !id.equals(voteItem.id) : voteItem.id != null) return false; if (itemname != null ? !itemname.equals(voteItem.itemname) : voteItem.itemname != null) return false; if (num != null ? !num.equals(voteItem.num) : voteItem.num != null) return false; if (voteTheme != null ? !voteTheme.equals(voteItem.voteTheme) : voteItem.voteTheme != null) return false; return true; } @Override public int hashCode() { int result = id != null ? id.hashCode() : 0; result = 31 * result + (itemname != null ? itemname.hashCode() : 0); result = 31 * result + (num != null ? num.hashCode() : 0); result = 31 * result + (voteTheme != null ? voteTheme.hashCode() : 0); return result; } public int compareTo(Object o) { VoteItem vi = (VoteItem) o; return this.itemname.compareTo(vi.getItemname()); } }
hibernate映射文件:
<?xml version="1.0" encoding="gb2312"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping default-lazy="false" > <class name="com.topsoft.icf.domain.entities.VoteItem" table="JL_WLTPX" > <meta attribute="class-description">投票项</meta> <id name="id" column="BS" type="java.lang.Long" > <meta attribute="field-description">标识</meta> <generator class="sequence"> <param name="sequence">SEQ_JL</param> <!-- To add non XDoclet generator parameters, create a file named hibernate-generator-params-VoteItem.xml containing the additional parameters and place it in your merge dir. --> </generator> </id> <property name="itemname" type="string" update="true" insert="true" column="XM" length="150" not-null="true" > <meta attribute="field-description">项名</meta> </property> <property name="num" type="long" update="true" insert="true" column="DPS" not-null="false" > <meta attribute="field-description">得票数</meta> </property> <many-to-one name="voteTheme" class="com.topsoft.icf.domain.entities.VoteTheme" cascade="none" outer-join="auto" update="true" insert="true" > <meta attribute="field-description">投票主题</meta> <column name="WLTPZT_BS" /> </many-to-one> <!-- To add non XDoclet property mappings, create a file named hibernate-properties-VoteItem.xml containing the additional properties and place it in your merge dir. --> </class> </hibernate-mapping>
首先这两张表关系:VoteTheme对VoteItem:一对多的关系;VoteItem对VoteTheme:多对一关系 。
大家要注意的地方:
一:
在VoteItem实体中应该导入接口:Comparable;
二:
在VoteItem实体类中要重写Comparable接口中的 public int compareTo(Object o)方法;
public int compareTo(Object o) { VoteItem vi = (VoteItem) o; return this.itemname.compareTo(vi.getItemname()); }
我这是根据投票项名称进行排序,当你进行保存和查看信息的时候,后台已经进行排序。这样你可以根据直接的情况来处理set排序问题。