以下列映射文件说明:
1 <?xml version="1.0"?> 2 <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Eg" 3 namespace="Eg"> 4 5 <class name="Cat" table="CATS" discriminator-value="C"> 6 <id name="Id" column="uid" type="Int64"> 7 <generator class="hilo"/> 8 </id> 9 <discriminator column="subclass" type="Char"/> 10 <property name="BirthDate" type="Date"/> 11 <property name="Color" not-null="true"/> 12 <property name="Sex" not-null="true" update="false"/> 13 <property name="Weight"/> 14 <many-to-one name="Mate" column="mate_id"/> 15 <set name="Kittens"> 16 <key column="mother_id"/> 17 <one-to-many class="Cat"/> 18 </set> 19 <subclass name="DomesticCat" discriminator-value="D"> 20 <property name="Name" type="String"/> 21 </subclass> 22 </class> 23 24 <class name="Dog"> 25 <!-- mapping for Dog could go here --> 26 </class> 27 28 </hibernate-mapping>
<hibernate-mapping (1) schema="schemaName" (2) default-cascade="none|save-update" (3) auto-import="true|false" (4) assembly="Eg" (5) namespace="Eg" />
1.1:schema:数据库表空间名称。假如指定了这个属性,表名会加上指定的schema的名字扩展为全限定名;若没有指定,表名就不会使用全限定名称。
1.2:default-cascade (可选 - 默认为 none): 默认的级联风格。
1.3:auto-import,指定在使用查询语句时是否可以使用非全限定名称。
1.4:assembly或namespace,可选属性,指定映射文件中的类所在的程序集名称和其所在的命令空间名,用来生成类的非全限定名
说明:如果没有设置assembly和namespace标签,就不得不使用类的非全限定名称(assembly.namesapce.类名,assembly)。假如2个持久化类的非全限定名称一样,应该设置auto-import="false"