For sure we can serialize Hbm* to have the XML. In the code you can see the example in : MapDslTests.CreateXmlDemo.ShowXml()
And this is the result of that mapping (readable as written by hand using NH's conventions): <?xml version="1.0" encoding="utf-8"?> <hibernate-mapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance " xmlns:xsd="http://www.w3.org/2001/XMLSchema " namespace="MapDsl" assembly="MapDsl" xmlns="urn:nhibernate-mapping-2.2"> <class name="Animal"> <id name="Id"> <generator class="native" /> </id> <property name="Description" /> <property name="BodyWeight" /> <many-to-one name="Mother" /> <many-to-one name="Father" /> <many-to-one name="Zoo" /> <property name="SerialNumber" /> <set name="Offspring" order-by="Father"> <key column="animal_key" /> <one-to-many class="Animal" /> </set> </class> <joined-subclass name="Reptile" extends="Animal"> <key column="animal_key" /> <property name="BodyTemperature" /> </joined-subclass> <joined-subclass name="Lizard" extends="Reptile"> <key column="reptile_key" /> </joined-subclass> <joined-subclass name="Mammal" extends="Animal"> <key column="animal_key" /> <property name="Pregnant" /> <property name="Birthdate" /> </joined-subclass> <joined-subclass name="DomesticAnimal" extends="Mammal"> <key column="mammal_key" /> <many-to-one name="Owner" /> </joined-subclass> <joined-subclass name="Cat" extends="DomesticAnimal"> <key column="domesticanimal_key" /> </joined-subclass> <joined-subclass name="Dog" extends="DomesticAnimal"> <key column="domesticanimal_key" /> </joined-subclass> <joined-subclass name="Human" extends="Mammal"> <key column="mammal_key" /> <component class="Name" name="Name"> <property name="First" /> <property name="Initial" /> <property name="Last" /> </component> <property name="NickName" /> <property name="Height" /> <property name="IntValue" /> <property name="FloatValue" /> <property name="BigDecimalValue" /> <property name="BigIntegerValue" /> <bag name="Friends"> <key column="human_key" /> <many-to-many class="Human" /> </bag> <map name="Family"> <key column="human_key" /> <map-key type="String" /> <many-to-many class="Human" /> </map> <bag name="Pets" inverse="true"> <key column="human_key" /> <one-to-many class="DomesticAnimal" /> </bag> <set name="NickNames" lazy="false" sort="natural"> <key column="human_key" /> <element type="String" /> </set> <map name="Addresses"> <key column="human_key" /> <map-key type="String" /> <composite-element class="Address"> <property name="Street" /> <property name="City" /> <property name="PostalCode" /> <property name="Country" /> <many-to-one name="StateProvince" /> </composite-element> </map> </joined-subclass> <class name="User"> <id name="Id"> <generator class="foreign"> <param name="property">Human</param> </generator> </id> <property name="UserName" /> <one-to-one name="Human" constrained="true" /> <list name="Permissions"> <key column="user_key" /> <list-index /> <element type="String" /> </list> </class> <class name="Zoo"> <id name="Id"> <generator class="native" /> </id> <discriminator /> <property name="Name" /> <property name="Classification" /> <map name="Mammals"> <key column="zoo_key" /> <map-key type="String" /> <one-to-many class="Mammal" /> </map> <map name="Animals" inverse="true"> <key column="zoo_key" /> <map-key type="String" /> <one-to-many class="Animal" /> </map> <component class="Address" name="Address"> <property name="Street" /> <property name="City" /> <property name="PostalCode" /> <property name="Country" /> <many-to-one name="StateProvince" /> </component> </class> <subclass name="PettingZoo" extends="Zoo" /> <class name="StateProvince"> <id name="Id"> <generator class="native" /> </id> <property name="Name" /> <property name="IsoCode" /> </class> </hibernate-mapping> 2010/1/13 Richard Brown (gmail) <[email protected]> > > The usage of Hbm* is more like a joke and will give us the ability to > see the XML. > > Can we re-serialise the Hbm* classes back into XML? (If so, then > definitely keep using them). > > > > In both cases what we should talk about is the API: > >what I have used in the post is a "hbm-xml-mimic" style and, IMO, it is > the best way for various reasons... > > I'm happy with the example shown ... I suspect I'd need to use it in anger > for a while to have anything more concrete to say. > > > -- Fabio Maulo
