如果是我设计的数据库,我是一定不会这样设计的,香港那边没技术,没不肯放权,害我对着这个落后的设计,
不知在hibernate中该如何配置xml才好,好在hibernate对这个落后的设计方法也能兼容,不然就麻烦了。
有3个表, user(u_group), student, teacher,如果是我设计,我是会用主键关联的。
User.hbm.xml
<property name="person_cd" type="java.lang.Long" column="person_cd" not-null="false" lazy="false" />
<property name="u_group" type="java.lang.String" column="u_group" not-null="true" lazy="false" />
<properties name="student">
// 这里关联student的设置,详细见下面的Student.hbm.xml
<property name="person_cd" column="person_cd" insert="false" update="false" />
<property name="u_group" column="u_group" insert="false" update="false" />
</properties>
<properties name="teacher">
// 这里关联teacher的设置,详细见下面的Teacher.hbm.xml
<property name="person_cd" column="person_cd" insert="false" update="false" />
<property name="u_group" column="u_group" insert="false" update="false" />
</properties>
Student.hbm.xml,在这里的设置是用一对一的方法,如果数据库改成用主键关联该多方便啊。
<one-to-one name="user" property-ref="student" class="exercise.model.User" cascade="none">
<formula>student_cd</formula> //通过formula识别user表中每条记录的类型
<formula>'S'</formula>
</one-to-one>
Teacher.hbm.xml,同Student,看上面的说明
<one-to-one name="user" property-ref="teacher" class="exercise.model.User" cascade="none">
<formula>teacher_cd</formula>
<formula>''T'</formula>
</one-to-one>
hql:
from Student where user.xx =?
Properties 是將某個表中的多個column分組,在鏈接表可以通過 formula進行過濾性取得數據。
在user.hbm.xml是定義了student組是有兩個屬性person_cd和u_group,那麼在student表對user進行map的時候,
必須要兩個formula且按順序對應。




















