TblEnter (1..N) TblEva (1..N) TblEvaMember
A B C
三表中各有搜索条件 TBL_A.XXX.. TBL_B.XXX.. TBL_C.XXX.. (A和B通过一个主键关联 ,B和C通过两个联合主键关联)
要求页面显示 :
TBL_A.id 1
TBL_B.id1 TBL_B.XXX
TBL_B.id2 TBL_B.XXX
TBL_B.id3 TBL_B.XXX
TBL_A.id 2
TBL_B.id1 TBL_B.XXX
TBL_B.id2 TBL_B.XXX
TBL_A.id 3
TBL_B.id1 TBL_B.XXX
TBL_B.id2 TBL_B.XXX
...
求HQL 或者 SQL实现!
有空的加我MSN:hundsunlin@hotmail.com
映射关系如下:实体Bean略 用Set表示一对多
<hibernate-mapping>
<class name="jp.go.mlit.eva.domain.TblEnter" table="TBL_ENTER"
schema="dbo" catalog="evadb">
<id name="enterId" type="java.lang.String">
<column name="ENTER_ID" length="5" />
<generator class="assigned" />
</id>
<many-to-one name="mstOrgByEvaOrg"
class="jp.go.mlit.eva.domain.MstOrg" fetch="select">
<column name="EVA_ORG" length="2" not-null="true" />
</many-to-one>
<many-to-one name="mstPref"
class="jp.go.mlit.eva.domain.MstPref" fetch="select">
<column name="PREFECTURE" length="2" not-null="true" />
</many-to-one>
<many-to-one name="mstMode"
class="jp.go.mlit.eva.domain.MstMode" fetch="select">
<column name="MODE" length="2" not-null="true" />
</many-to-one>
<many-to-one name="mstOrgByJuris"
class="jp.go.mlit.eva.domain.MstOrg" fetch="select">
<column name="JURIS" length="2" not-null="true" />
</many-to-one>
<property name="enterName" type="java.lang.String">
<column name="ENTER_NAME" length="200" not-null="true" />
</property>
<property name="lastName" type="java.lang.String">
<column name="LAST_NAME" length="20" />
</property>
<property name="firstName" type="java.lang.String">
<column name="FIRST_NAME" length="20" />
</property>
<property name="address" type="java.lang.String">
<column name="ADDRESS" length="400" />
</property>
<property name="url" type="java.lang.String">
<column name="URL" length="100" />
</property>
<property name="deleteFlg" type="java.lang.String">
<column name="DELETE_FLG" length="1" not-null="true" />
</property>
<property name="updatetime" type="java.util.Date">
<column name="UPDATETIME" length="23" />
</property>
<set name="tblEvas" inverse="true">
<key>
<column name="ENTER_ID" length="5" not-null="true" />
</key>
<one-to-many class="jp.go.mlit.eva.domain.TblEva" />
<filter name="filterEvas"
condition="ENTER_ID=:tblEnterId and EVA_ID= :tblEvaId" />
</set>
<property name="countEvaInfo"
formula="(SELECT COUNT(*) FROM TBL_EVA AS t WHERE
t.ENTER_ID = ENTER_ID
AND t.DELETE_FLG = 0
AND t.EVA_DATE <= Getdate()
AND t.EVA_RPT IS NOT NULL
)">
</property>
</class>
<filter-def name="filterEvas">
<filter-param name="tblEnterId" type="java.lang.String" />
<filter-param name="tblEvaId" type="java.lang.String" />
</filter-def>
</hibernate-mapping>
<hibernate-mapping>
<class name="jp.go.mlit.eva.domain.TblEva" table="TBL_EVA"
schema="dbo" catalog="evadb">
<composite-id name="id"
class="jp.go.mlit.eva.domain.TblEvaId">
<key-many-to-one name="tblEnter"
class="jp.go.mlit.eva.domain.TblEnter">
<column name="ENTER_ID" length="5" />
</key-many-to-one>
<key-property name="evaId" type="java.lang.String">
<column name="EVA_ID" length="3" />
</key-property>
</composite-id>
<many-to-one name="mstOrgByEvaOrg"
class="jp.go.mlit.eva.domain.MstOrg" fetch="select">
<column name="EVA_ORG" length="2" />
</many-to-one>
<many-to-one name="mstPref"
class="jp.go.mlit.eva.domain.MstPref" fetch="select">
<column name="PREFECTURE" length="2" />
</many-to-one>
<many-to-one name="mstMode"
class="jp.go.mlit.eva.domain.MstMode" fetch="select">
<column name="MODE" length="2" />
</many-to-one>
<many-to-one name="mstOrgByJuris"
class="jp.go.mlit.eva.domain.MstOrg" fetch="select">
<column name="JURIS" length="2" />
</many-to-one>
<property name="enterName" type="java.lang.String">
<column name="ENTER_NAME" length="200" not-null="true" />
</property>
<property name="lastName" type="java.lang.String">
<column name="LAST_NAME" length="20" />
</property>
<property name="firstName" type="java.lang.String">
<column name="FIRST_NAME" length="20" />
</property>
<property name="address" type="java.lang.String">
<column name="ADDRESS" length="400" />
</property>
<property name="url" type="java.lang.String">
<column name="URL" length="100" />
</property>
<property name="evaDateDiv" type="java.lang.String">
<column name="EVA_DATE_DIV" length="1" />
</property>
<property name="evaDate" type="java.lang.String">
<column name="EVA_DATE" length="23" />
</property>
<property name="evaRpt"
type="org.springframework.orm.hibernate3.support.BlobByteArrayType">
<column name="EVA_RPT" length="1073741823" />
</property>
<property name="evaRptUpdater" type="java.lang.String">
<column name="EVA_RPT_UPDATER" length="92" />
</property>
<property name="evaRptUpdatetime" type="java.util.Date">
<column name="EVA_RPT_UPDATETIME" length="23" />
</property>
<property name="deleteFlg" type="java.lang.String">
<column name="DELETE_FLG" length="1" not-null="true" />
</property>
<property name="updatetime" type="java.util.Date">
<column name="UPDATETIME" length="23" />
</property>
<set name="tblEvaMembers" inverse="true">
<key>
<column name="ENTER_ID" length="5" not-null="true" />
<column name="EVA_ID" length="3" not-null="true" />
</key>
<one-to-many class="jp.go.mlit.eva.domain.TblEvaMember" />
<filter name="filterMembers"
condition="EVA_MEMBER_ID=:memberId" />
</set>
<set name="tblEvaInfos" inverse="true">
<key>
<column name="ENTER_ID" length="5" not-null="true" />
<column name="EVA_ID" length="3" not-null="true" />
</key>
<one-to-many class="jp.go.mlit.eva.domain.TblEvaInfo" />
</set>
<property name="countEvaRelateFile"
formula = "(
SELECT COUNT(ei.ENTER_ID)
FROM TBL_EVA_INFO ei
WHERE ei.DIVISION = 01
AND ei.ENTER_ID = ENTER_ID
AND ei.EVA_ID = EVA_ID
)">
</property>
<property name="countEvaResultFile"
formula="(
SELECT
CASE WHEN EVA_RPT IS NOT NULL
THEN COUNT(ei.ENTER_ID)+1
ELSE COUNT(ei.ENTER_ID)
END
FROM TBL_EVA_INFO ei
WHERE ei.DIVISION = 02
AND ei.ENTER_ID = ENTER_ID
AND ei.EVA_ID = EVA_ID
)">
</property>
</class>
<filter-def name="filterMembers">
<filter-param name="memberId" type="java.lang.String" />
</filter-def>
</hibernate-mapping>
<hibernate-mapping>
<class name="jp.go.mlit.eva.domain.TblEvaMember" table="TBL_EVA_MEMBER">
<composite-id name="id" class="jp.go.mlit.eva.domain.TblEvaMemberId">
<key-many-to-one name="tblEva" class="jp.go.mlit.eva.domain.TblEva">
<column name="ENTER_ID" length="5" />
<column name="EVA_ID" length="3" />
</key-many-to-one>
<key-many-to-one name="tblUser" class="jp.go.mlit.eva.domain.TblUser">
<column name="EVA_MEMBER_ID" />
</key-many-to-one>
</composite-id>
<property name="dspBelong" type="java.lang.String">
<column name="DSP_BELONG" length="50" not-null="true" />
</property>
<property name="dspAuthority" type="java.lang.String">
<column name="DSP_AUTHORITY" length="10" not-null="true" />
</property>
<property name="dspMode" type="java.lang.String">
<column name="DSP_MODE" length="12" />
</property>
<property name="dspUserLastname" type="java.lang.String">
<column name="DSP_USER_LASTNAME" length="20" not-null="true" />
</property>
<property name="dspUserFirstname" type="java.lang.String">
<column name="DSP_USER_FIRSTNAME" length="20" not-null="true" />
</property>
<property name="leaderFlg" type="java.lang.String">
<column name="LEADER_FLG" length="1" not-null="true" />
</property>
<property name="updatetime" type="java.util.Date">
<column name="UPDATETIME" length="23" />
</property>
</class>
</hibernate-mapping>
分享到:
相关推荐
Hibernate 系列教程 单向一对多
Hibernate关联关系配置,一对一,一对多,多对多,联合主键等的配置
hibernate一对多双向自连接关联映射 15 hibernate多对多关联映射(单向User---->Role) 19 hibernate多对多关联映射(双向User<---->Role) 20 Hibernate的继承关系 21 每棵继承树映射成一张表(hibernate_extends_1) 22 ...
一对多双向关联关系、一对多双向自身关联关系、一对一关联关系(主键关联、外键关联)、一对多与一对一结合、多对多关联关系、Map、Set、List与Bag映射关系、查询排序(内存排序和数据库排序)、联合主键的映射规则、...
这种策略支持双向的一对多关联,但不支持 IDENTIFY 生成器策略,因为ID必须在多个表间共享。一旦使用就不能使用AUTO和IDENTIFY生成器。 每个类层次结构一张表 @Entity @Inheritance(strategy=InheritanceType....
6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联,...
一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联,涉及...
6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 三重关联...
7.2.5. 一对多关联(One-to-many Associations) 7.3. 高级集合映射(Advanced collection mappings) 7.3.1. 有序集合(Sorted collections) 7.3.2. 双向关联(Bidirectional associations) 7.3.3. 三重关联...
7.2.1 一对多关联 7.2.2 多对多关联 7.2.3 把列添加到联结表 7.2.4 映射map 7.3 多态关联 7.3.1 多态的多对一关联 7.3.2 多态集合 7.3.3 对联合的多态关联 7.3.4 每个具体类一张...
* @OneToMany 设置一对多关联。cascade属性指定关联级别,参考@OneToOne中的说明。fetch指定是否延迟加载,值为FetchType.LAZY表示延迟,为FetchType.EAGER表示立即加载 * 方法一 使用这种配置,在为“一端”添加“多...
15.3.4 把多对多关联分解为两个一对多关联 15.4 小结 15.5 思考题 第16章 Hibernate的检索策略 16.1 Hibernate的检索策略简介 16.2 类级别的检索策略 16.2.1 立即检索 16.2.2 延迟检索 16.3 一对多...
7.2.5. 一对多关联(One-to-many Associations) 7.3. 高级集合映射(Advanced collection mappings) 7.3.1. 有序集合(Sorted collections) 7.3.2. 双向关联(Bidirectional associations) 7.3.3. 三重关联...
组件的属性可以是任意一种Hibernate类型(包括集合, 多对多关联, 以及其它组件等等)。嵌套组件不应该被当作一种特殊的应用(Nested components should not be considered an exotic usage)。 Hibernate倾向于支持...
7.2.5. 一对多关联(One-to-many Associations) 7.3. 高级集合映射(Advanced collection mappings) 7.3.1. 有序集合(Sorted collections) 7.3.2. 双向关联(Bidirectional associations) 7.3.3. 三重关联...
一对多关联(One-to-many Associations) 7.3. 高级集合映射(Advanced collection mappings) 7.3.1. 有序集合(Sorted collections) 7.3.2. 双向关联(Bidirectional associations) 7.3.3. 三重关联...
6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 三重关联...
6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联,...
15.3.4 把多对多关联分解为两个一对多关联 15.4 小结 15.5 思考题 第16章 Hibernate的检索策略 16.1 Hibernate的检索策略简介 16.2 类级别的检索策略 16.2.1 立即检索 16.2.2 延迟检索 16.3 一对多...