These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 
Author Message
 Post subject: Any suggestions for converting "Y" in Db to a Bool
PostPosted: Tue Jan 30, 2007 4:42 pm 
Beginner
Beginner

Joined: Thu Dec 21, 2006 11:38 am
Posts: 30
Another problem I have:

in our so elegantly designed database, I have some fields that use a "Y" or "N" as boolean types.

Of course nhibernate throws the work of converting to Convert.ToBoolean which doesn't recognize the "Y" string as a boolean value.

Anybody have a suggestion for dealing with this? I'd really prefer to keep the class's property as a Boolean.

Exception details:
Code:
[FormatException: String was not recognized as a valid Boolean.]
   System.Boolean.Parse(String value) +2709684
   System.String.System.IConvertible.ToBoolean(IFormatProvider provider) +12
   System.Convert.ToBoolean(Object value) +25
   NHibernate.Type.BooleanType.Get(IDataReader rs, Int32 index) in C:\Program Files\NHibernate\1.2.0.Beta2\src\NHibernate\Type\BooleanType.cs:40
   NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String name) in C:\Program Files\NHibernate\1.2.0.Beta2\src\NHibernate\Type\NullableType.cs:270
   NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String[] names, ISessionImplementor session, Object owner) in C:\Program Files\NHibernate\1.2.0.Beta2\src\NHibernate\Type\NullableType.cs:212
   NHibernate.Type.AbstractType.Hydrate(IDataReader rs, String[] names, ISessionImplementor session, Object owner) in C:\Program Files\NHibernate\1.2.0.Beta2\src\NHibernate\Type\AbstractType.cs:128
   NHibernate.Type.ComponentType.Hydrate(IDataReader rs, String[] names, ISessionImplementor session, Object owner) in C:\Program Files\NHibernate\1.2.0.Beta2\src\NHibernate\Type\ComponentType.cs:690
   NHibernate.Loader.Loader.Hydrate(IDataReader rs, Object id, Object obj, ILoadable persister, ISessionImplementor session, String[][] suffixedPropertyColumns) in C:\Program Files\NHibernate\1.2.0.Beta2\src\NHibernate\Loader\Loader.cs:1101
   NHibernate.Loader.Loader.LoadFromResultSet(IDataReader rs, Int32 i, Object obj, Type instanceClass, EntityKey key, LockMode lockMode, ILoadable rootPersister, ISessionImplementor session) in C:\Program Files\NHibernate\1.2.0.Beta2\src\NHibernate\Loader\Loader.cs:1000
   NHibernate.Loader.Loader.InstanceNotYetLoaded(IDataReader dr, Int32 i, ILoadable persister, EntityKey key, LockMode lockMode, EntityKey optionalObjectKey, Object optionalObject, IList hydratedObjects, ISessionImplementor session) in C:\Program Files\NHibernate\1.2.0.Beta2\src\NHibernate\Loader\Loader.cs:957
   NHibernate.Loader.Loader.GetRow(IDataReader rs, ILoadable[] persisters, EntityKey[] keys, Object optionalObject, EntityKey optionalObjectKey, LockMode[] lockModes, IList hydratedObjects, ISessionImplementor session) in C:\Program Files\NHibernate\1.2.0.Beta2\src\NHibernate\Loader\Loader.cs:891
   NHibernate.Loader.Loader.GetRowFromResultSet(IDataReader resultSet, ISessionImplementor session, QueryParameters queryParameters, LockMode[] lockModeArray, EntityKey optionalObjectKey, IList hydratedObjects, EntityKey[] keys, Boolean returnProxies) in C:\Program Files\NHibernate\1.2.0.Beta2\src\NHibernate\Loader\Loader.cs:295
   NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) in C:\Program Files\NHibernate\1.2.0.Beta2\src\NHibernate\Loader\Loader.cs:424
   NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) in C:\Program Files\NHibernate\1.2.0.Beta2\src\NHibernate\Loader\Loader.cs:183
   NHibernate.Loader.Loader.LoadEntity(ISessionImplementor session, Object id, IType identifierType, Object optionalObject, Type optionalEntityName, Object optionalIdentifier, IEntityPersister persister) in C:\Program Files\NHibernate\1.2.0.Beta2\src\NHibernate\Loader\Loader.cs:1475


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jan 30, 2007 4:45 pm 
Beginner
Beginner

Joined: Thu Dec 21, 2006 11:38 am
Posts: 30
I guess the real question is, is there a way to either intercept the conversion process,

or generate a custom NHibernate IType that can recognize the "Y" as a boolean 'True'.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jan 30, 2007 5:14 pm 
Regular
Regular

Joined: Fri Jan 27, 2006 2:32 pm
Posts: 102
Location: California, USA
ensoft wrote:
I guess the real question is, is there a way to either intercept the conversion process,

or generate a custom NHibernate IType that can recognize the "Y" as a boolean 'True'.


Try this:

Code:
<property name="IsActive" column="is_active" type="YesNo" />


YesNo is the important piece. This is a type provided by NHibernate that maps a boolean to 'Y' and 'N' character fields in the database.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jan 30, 2007 5:44 pm 
Beginner
Beginner

Joined: Thu Dec 21, 2006 11:38 am
Posts: 30
Yes! I literally just found that!

Thanks for the reply though


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.