Hi guys, I've tried <property name="PasswordFormat" column="PasswordFormat" />
and that works. not-null="true" was more fore being consistent with the database's table as this column doesn't allow null. Thanks On 9 Sep, 02:09, Fabio Maulo <[email protected]> wrote: > This is how should look that mapping > <property name="PasswordFormat" /> > > Note: not-null="true" ; how an enum can be null ? > > 2009/9/8 Lothan <[email protected]> > > > > > > > I've run into that situation as well and it seems to boil down to the fact > > that mapped the column as an Int32, but the actual value is an enum so the > > final value looks different to NHibernate. The solution I found is to map > > it > > to the actual enum type using the fully-qualified type name, e.g.: > > > <property name="PasswordFormat" column="PasswordFormat" > > type=MyDomain.Namespace.PasswordFormatType, MyDomain" not-null="true" /> > > > Anyone feel free to correct anything I may have gotten wrong. > > > -------------------------------------------------- > > From: "graphicsxp" <[email protected]> > > Sent: Tuesday, September 08, 2009 11:57 AM > > To: "nhusers" <[email protected]> > > Subject: [nhusers] Re: issue with inverse=true > > > > Ok, I've narrowed down the problem. It's actually not to do with > > > inverse=true but with this line in the mapping of Artist : > > > > <property name="PasswordFormat" column="PasswordFormat" type="Int32" > > > not-null="true" /> > > > > The value set in my code is of type MembershipPasswordFormat which is > > > an Enum in System.Web.Security. So the value I'm trying to persist is > > > MembershipPasswordFormat.Clear, which is equal to 0. For some reason, > > > NH does an update even when the value is not changed. > > > > Anyone ? > > > > On 24 Aug, 16:13, graphicsxp <[email protected]> wrote: > > >> Hi, > > >> Thanks for helping. > > > >> The mapping for the Art class : > > > >> <?xml version="1.0" encoding="utf-8" ?> > > >> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> > > >> <class name="XXX.Art, XXX" table="Art"> > > >> <id name="Id" column="BuzzUserArtID" type="guid"> > > >> <generator class="guid.comb"/> > > >> </id> > > > >> <many-to-one name="Owner" class="XXX.Artist, XXX" > > >> column="BuzzUserID" not-null="true" /> > > >> <many-to-one name="Category" class="XXX.XXXCategory, XXX" > > >> column="XXXCategoryID" /> > > > >> <property name="Title" type="String" length="50" column="Title" /> > > >> <property name="Description" type="String" length="4000" > > >> column="Description" /> > > >> <property name="Width" type="integer" column="Width" /> > > >> <property name="Height" type="integer" column="Height" /> > > >> <property name="ArtDate" type="Date" column="BuzzUserArtDate" /> > > >> <property name="DateCreated" type="Date" column="DateCreated" > > >> insert="false" update="false" /> > > >> <property name="DateModified" type="Date" column="DateModified" > > >> insert="false" /> > > >> <property name="BuzzCount" type="integer" column="BuzzCount" /> > > >> <property name="Rating" type="double" column="Rating" /> > > >> <property name="Url" type="String" column="URL" /> > > >> <property name="UrlResized" type="String" column="URLResized" /> > > >> <property name="UrlThumbnail" type="String" column="URLThumbnail" / > > > >> <property name="IsProcessed" type="Boolean" column="IsProcessed" / > > > >> <property name="Scrapped" type="Boolean" column="Scrapped" > > >> insert="false" /> > > > >> <bag name="Comments" inverse="true" cascade="all-delete-orphan" > > >> lazy="true"> > > >> <key column="BuzzUserArtID" on-delete="cascade"/> > > >> <one-to-many class="XXX.BuzzUserArtComment, XXX" /> > > >> </bag> > > > >> </class> > > >> </hibernate-mapping> > > > >> And for the Artist > > > >> <?xml version="1.0" encoding="utf-8" ?> > > >> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> > > >> <class name="XXX.BuzzUser, XXX" table="BuzzUser" lazy="true"> > > >> <id name="Id" column="BuzzUserID" type="guid"> > > >> <generator class="guid.comb"/> > > >> </id> > > > >> <property name="FirstName" type="String" length="50" > > >> column="FirstName" not-null="true" /> > > >> <property name="LastName" type="String" length="100" > > >> column="LastName" not-null="true" /> > > >> <property name="FullName" type="String" length="150" > > >> column="FullName" insert="false" update="false" /> > > >> <property name="Email" type="String" length="50" column="Email" > > >> not-null="true" /> > > >> <property name="UserName" type="String" length="50" > > >> column="UserName" not-null="true" /> > > >> <property name="Password" type="String" length="256" > > >> column="Password" not-null="true" /> > > >> <property name="PasswordSalt" column="PasswordSalt" type="String" > > >> not-null="false" length="64" /> > > >> <property name="PasswordFormat" column="PasswordFormat" > > >> type="Int32" not-null="true" /> > > >> <property name="FailedPasswordAttemptCount" > > >> column="FailedPasswordAttemptCount" type="Int32" not-null="true" / > > > >> <property name="LastPasswordChangedDate" > > >> column="LastPasswordChangedDate" type="DateTime" not-null="false" > > >> insert="false" update="false" /> > > >> <property name="LastActivityDate" column="LastActivityDate" > > >> type="DateTime" not-null="true" insert="false" update="false" /> > > >> <property name="IsApproved" column="isApproved" type="Boolean" not- > > >> null="true" /> > > >> <property name="IsLockedOut" column="isLockedOut" type="Boolean" > > >> not-null="true" /> > > >> <property name="LastLockOutDate" column="LastLockOutDate" > > >> type="DateTime" not-null="false" insert="false" update="false" /> > > >> <property name="LastLoginDate" column="LastLoginDate" > > >> type="DateTime" not-null="false" insert="false" update="false"/> > > >> <property name="DateCreated" type="Date" column="DateCreated" > > >> insert="false" update="false" /> > > >> <property name="DateModified" type="Date" column="DateModified" > > >> insert="false" /> > > >> <property name="Scrapped" type="Boolean" column="Scrapped" > > >> insert="false" /> > > >> <property name="UrlPhoto" type="String" column="URLPhoto" /> > > >> <property name="PersonalWebSite" type="String" > > >> column="PersonalWebSite" /> > > > >> <bag name="Arts" inverse="true" cascade="all-delete-orphan" > > >> lazy="true"> > > >> <key column="BuzzUserID" on-delete="cascade"/> > > >> <one-to-many class="XXX.Art, XXX" /> > > >> </bag> > > > >> </class> > > >> </hibernate-mapping> > > > >> Can you see something wrong ? > > > >> On 23 août, 16:42, zihotki <[email protected]> wrote: > > > >> > Hi, > > > >> > Could you please post complete mapping? It's very hard to understand > > >> > the problem with the parts of mappings you wrote before. > > >> > And also please check generated SQL queries, probably you'll find the > > >> > answer yourself. > > > >> > On Aug 22, 10:08 pm, graphicsxp <[email protected]> wrote: > > > >> > > Hi, > > > >> > > I'll post the relevant part of my mapping. I have two classes : Art > > >> > > and Artist. An Artist owns a collection of Art and an Art belongs to > > >> > > one and only one Artist. > > > >> > > Art mapping : > > >> > > <class name="xxx" table="xxx"> > > >> > > <id name="Id" column="xxx" type="guid"> > > >> > > <generator class="guid.comb"/> > > >> > > </id> > > > >> > > <many-to-one name="Artist" class="xxx.xxx, xxx" column="UserID" > > >> > > not-null="true" /> > > >> > > . > > >> > > . > > >> > > . > > > >> > > Artist mapping : > > > >> > > <bag name="Arts" inverse="true" cascade="all-delete-orphan" > > >> > > lazy="true"> > > >> > > <key column="UserID" on-delete="cascade"/> > > >> > > <one-to-many class="xxx.xxx, xxx" /> > > >> > > </bag> > > > >> > > Now when I save a new Art, NH performs and INSERT and then an UPDATE > > >> > > on Artist, which is wrong. > > > >> > > Here's my code for saving the Art entity : > > > >> > > Art art = null; > > > _UserArtDao.SessionManager.GetCurrentSession().BeginTransaction > > >> > > (); > > > >> > > art = new Art() > > >> > > { > > >> > > Category = _artCategoryDao.GetById(1), > > >> > > Artist = _UserDao.GetByUserName > > >> > > ("jack"), > > >> > > }; > > >> > > _ArtDao.SaveOrUpdate(art); > > > >> > > _ArtDao.SessionManager.GetCurrentSession().Transaction.Commit(); > > > >> > > Could you help me understanding what I'm doing wrong and why there > > is > > >> > > an extra UPDATE on the Artist table ? > > > >> > > Thanks > > -- > Fabio Maulo --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
