Thanks Fabio. I understand your point. On Oct 17, 5:36 pm, Fabio Maulo <[email protected]> wrote: > No, I'm talking about "I have to create a new project"; the existing > DB in not part of the old application? > If there is a sense because you are re-implementing an existing > application why re-implement the DB is not an option? > Is the DB a granitic piece of technology of the past century? > > -- > Fabio Maulo > > El 17/10/2010, a las 12:18, DavidOs <[email protected]> escribió: > > > > > Hi Fabio, > > > Thanks for your advice. > > You are talking about a situation when I have to create a new project > > and the DB doesn't exist. but in my case the DB exist already for long > > time and I can't change it so the question is if NH can do something > > here ? > > > David . > > > On Oct 17, 2:08 pm, Fabio Maulo <[email protected]> wrote: > >> As advise, not as solution: > >> - switch your mind! Stop to talk about "Table" and begin thinking in > >> entities, assotiations, aggregations, inheritance and so on; think > >> about object and then, perhaps, about how represent it in tables. > >> - don't use business meaning properties as PK > >> - don't use PK composed by more than one field > > >> -- > >> Fabio Maulo > > >> El 17/10/2010, a las 07:54, DavidOs <[email protected]> escribió: > > >>> Hi, > > >>> I have a table that represent groups of codes like countries,cities > >>> etc. > >>> I need just the list of countries from this table. > >>> To define this table in the hbm.xml file I use the composite-id like > >>> this : > > >>> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" > >>> assembly="StudentsNH" namespace="StudentsNH.Domain"> > > >>> <class name="Country" table="mz_kodim"> > >>> <composite-id > > >>> <key-property name="countryGroupCode" column="mispar_tab" /> > >>> <key-property name="countryCode" column="kod" /> > >>> <key-property name="LangCode" column="kod_safa" /> > >>> </composite-id> > >>> <property name="countryDesc" column="teur" /> > >>> </class> > > >>> </hibernate-mapping> > > >>> This is the country class : > > >>> public class Country > >>> { > >>> public virtual int countryGroupCode { get; set; } > >>> public virtual int countryCode{get;set;} > >>> public virtual int LangCode { get; set; } > >>> public virtual string countryDesc {get; set;} > > >>> public override bool Equals(object obj) > >>> { > >>> return true; > >>> } > > >>> public override int GetHashCode() > >>> { > >>> return this.GetHashCode(); > >>> } > >>> } > > >>> Here I get the country name : > > >>> public string SelectCountryByID(int n) > >>> { > >>> try > >>> { > >>> using (ISession session = > >>> NHibernateHelper.OpenSession()) > >>> { > >>> var s = session.Get<Country>(new Country() > >>> { > >>> countryGroupCode = > >>> 16, > >>> countryCode = n, > >>> LangCode = 1 > >>> }); > > >>> return ((Country)s).countryDesc; > >>> } > > >>> } > >>> catch (Exception ex) > >>> { > >>> return null; > >>> } > >>> } > > >>> This works fine. > > >>> Now is my problem. > > >>> I have a student class which contain all its details and his birth > >>> country. > >>> This students table in the database contain just the code value of the > >>> country. > >>> In the class I want to represent a country entity rather than the code > >>> value. > >>> Here the student class I called "Demographic" : > > >>> public class Demographic > >>> { > >>> public virtual string idNumber { get; set; } > >>> public virtual string hebFirstName { get; set; } > >>> public virtual string hebLastName { get; set; } > >>> public virtual string engFirstName { get; set; } > >>> public virtual string engLastName { get; set; } > >>> public virtual DateTime dateBirth { get; set; } > >>> public virtual Country birthCountry { get; set; } > >>> public virtual string telNumber { get; set; } > >>> public virtual string cellNumber { get; set; } > >>> public virtual string streetName { get; set; } > >>> public virtual int streetNum { get; set; } > >>> public virtual int mikudNum { get; set; } > >>> public virtual string email { get; set; } > > >>> } > > >>> Now, I don't know what to write in the hbm.xml file so I tried this : > > >>> hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" > >>> assembly="StudentsNH" namespace="StudentsNH.Domain"> > >>> <class name="Demographic" table="Olim1"> > >>> <id name="idNumber" column="mispar_zehut" > > >>> <generator class="assigned" /> > >>> </id> > >>> <property name="hebFirstName" column="shem_prati"/> > >>> <property name="hebLastName" column="shem_mishpaha"/> > >>> <property name="engFirstName" column="shem_prati_l"/> > >>> <property name="engLastName" column="shem_mishpaha_l" /> > >>> <property name="dateBirth" column="tarich_leyda" /> > >>> <many-to-one name="birthCountry" column="kod" fetch="join" > >>> class="Country" /> > >>> <property name="telNumber" column="telephone" /> > >>> <property name="cellNumber" column="telephone_nayad"/> > >>> <property name="streetName" column="rehov_ktovet" /> > >>> <property name="streetNum" column="mispar_ktovet" /> > >>> <property name="mikudNum" column="mikud_ktovet" /> > >>> <property name="email" column="email" /> > >>> </class> > > >>> </hibernate-mapping> > > >>> I try this to get few students instances : > > >>> public Demographic SelectStudent(string userName, string pass) > >>> { > >>> try > >>> { > >>> using (ISession session = > >>> NHibernateHelper.OpenSession()) > >>> { > >>> var s = > >>> session.CreateCriteria(typeof(Demographic)).Add(Expression.Conjunction() > >>> > >>> .Add(Expression.Eq("birthCountry.countryGroupCode", > >>> 16)) > >>> > >>> .Add(Expression.Eq("birthCountry.countryCode", > >>> 9)) > >>> > >>> .Add(Expression.Eq("birthCountry.LangCode", > >>> 1))) > >>> > >>> .SetMaxResults(5).List<Demographic>(); > >>> return new Demographic(); // just for compile > >>> } > >>> } > > >>> catch (Exception ex) > >>> { > >>> return null; > >>> } > >>> } > > >>> I get an exception when I get this row: > >>> using (ISession session = NHibernateHelper.OpenSession()) > > >>> The error message : > >>> Foreign key (FK8DC307354C14518B:Olim1 [kod])) must have same number of > >>> columns as the referenced primary key (mz_kodim [mispar_tab, kod, > >>> kod_safa]) > > >>> I guess it's related to the Demographic.hbm.xml file. > > >>> Can you help me please to solve this problem ? > > >>> I'm using NHibernate 2.1.2 > > >>> Thanks, > > >>> David > > >>> -- > >>> You received this message because you are subscribed to the Google Groups > >>> "nhusers" group. > >>> To post to this group, send email to [email protected]. > >>> To unsubscribe from this group, send email to > >>> [email protected]. > >>> For more options, visit this group > >>> athttp://groups.google.com/group/nhusers?hl=en.-Hide quoted text - > > >> - Show quoted text - > > > -- > > You received this message because you are subscribed to the Google Groups > > "nhusers" group. > > To post to this group, send email to [email protected]. > > To unsubscribe from this group, send email to > > [email protected]. > > For more options, visit this group > > athttp://groups.google.com/group/nhusers?hl=en.- Hide quoted text - > > - Show quoted text -
-- You received this message because you are subscribed to the Google Groups "nhusers" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/nhusers?hl=en.
