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.  [ 1 post ] 
Author Message
 Post subject: Nhibernate Oracle using odp.net mapping problem
PostPosted: Wed Jul 12, 2006 1:35 pm 
Newbie

Joined: Wed Jul 12, 2006 10:43 am
Posts: 1
I have a boolean attribute in the class which is mapped to an oracle number(1) field in the table. the web.config file has the following section on nhibernate:
Code:
  <nhibernate>
    <add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider" />
    <add key="hibernate.dialect" value="NHibernate.Dialect.OracleDialect" />
    <add key="hibernate.connection.driver_class" value="NHibernate.Driver.OracleClientDriver" />
    <add key="hibernate.connection.connection_string" value="server=aaaa:1501;Data Source=aaaaa;User ID=aaaaa;Password=aaaaa;" />
    <add key="hibernate.use_outer_join" value="true"/>
    <add key="hibernate.query.substitutions" value="true 1, false 0, yes 'Y', no 'N'"/>
    <add key="hibernate.cache.provider_class" value="NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache"/>
    <add key="hibernate.show_sql" value="true"/>
    <add key="hibernate.connection.isolation" value="ReadCommitted" />
  </nhibernate>


While saving data it correctly translates true = 1 for the boolean column, but while retrieving data it is unable to translate 1 from the database to "true" in my class.

Any help is greatly appreciated.

Thanks


Hibernate version: 1.0.2.0, Runtime Version: v1.1.4322

Mapping documents:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!--
     Name: Loan.hbm.xml
     license-header java merge-point

     Attention: Generated code! Do not modify by hand!
     Generated by: nhibernate.hbm.xml.vsl in andromda-nhibernate-cartridge.
  -->
<hibernate-mapping
    xmlns="urn:nhibernate-mapping-2.0"
    default-cascade="none">

    <class
        name="Spi2.Cards.LoanImpl, CARDSModelCore"
        table="LOAN"
        dynamic-insert="false"
        dynamic-update="false"
        lazy="true">

        <id name="Oid" type="Int64" unsaved-value="0">
            <column name="OID" sql-type="NUMBER(19)"/>
            <generator class="sequence">
                <param name="sequence">LOAN_SEQ</param>
            </generator>
        </id>

        <property name="LoanNumber" type="String">
            <column name="LOANNUMBER" not-null="true" unique="false" sql-type="VARCHAR2(255)"/>
        </property>

        <property name="IsMortgagorAddressChanged" type="NHibernate.Nullables2.NullableBooleanType, NHibernate.Nullables2">
            <column name="ISMORTGAGORADDRESSCHANGED" not-null="false" unique="false" sql-type="NUMBER(1)"/>
        </property>


        <many-to-one name="LoanStatus" class="Spi2.Cards.TermImpl, CARDSModelCore" outer-join="auto" foreign-key="LOANLOANSTATUS_FKC">
            <column name="LOANSTATUS_FK" not-null="false" sql-type="VARCHAR2(255)"/>
        </many-to-one>

        <many-to-one name="LoanType" class="Spi2.Cards.TermImpl, CARDSModelCore" outer-join="auto" foreign-key="LOANLOANTYPE_FKC">
            <column name="LOANTYPE_FK" not-null="true" sql-type="VARCHAR2(255)"/>
        </many-to-one>

        <many-to-one name="Client" class="Spi2.Cards.ClientImpl, CARDSModelCore" outer-join="auto" foreign-key="LOANCLIENT_FKC">
            <column name="CLIENT_FK" not-null="true" sql-type="NUMBER(19)"/>
        </many-to-one>

    </class>

</hibernate-mapping>



Code between sessionFactory.openSession() and session.close():
Code:
        ITransaction transaction = session.BeginTransaction();

        LoanImpl mLoan = (LoanImpl)session.Load(typeof(LoanImpl), Convert.ToInt64(txtZip.Text));

        txtLoanNumber.Text = mLoan.LoanNumber;

        transaction.Commit();



Full stack trace of any exception that occurs:
Code:
NHibernate.LazyInitializationException was unhandled by user code
  Message="Exception initializing proxy: [LoanImpl#1]"
  Source="NHibernate"
  StackTrace:
       at NHibernate.Proxy.LazyInitializer.InitializeWrapExceptions()
       at NHibernate.Proxy.LazyInitializer.GetImplementation()
       at NHibernate.Proxy.CastleLazyInitializer.Intercept(IInvocation invocation, Object[] args)
       at CProxyTypeLoanImplCards_INHibernateProxy_ISerializable2.get_LoanNumber()
       at _Default.btnHibernate_Click(Object sender, EventArgs e) in c:\Projects\spiUIbeta_2006-06-29\spiUIbetaWeb\PropertySearch.aspx.cs:line 285
       at System.Web.UI.WebControls.Button.OnClick(EventArgs e)
       at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
       at System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
       at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
       at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
       at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)



The inner Exception is:
Code:
NHibernate.LazyInitializationException: Exception initializing proxy: [LoanImpl#1] ---> NHibernate.ADOException: Could not cast the value in field ISMORTG17_0_ to the Type NullableBooleanType.  Please check to make sure that the mapping is correct and that your DataProvider supports this Data Type. ---> System.InvalidCastException: Specified cast is not valid.
   at NHibernate.Nullables2.NullableBooleanType.Get(IDataReader rs, Int32 index)
   at NHibernate.Nullables2.NullableBaseType.NullSafeGet(IDataReader rs, String name)
   --- End of inner exception stack trace ---
   at NHibernate.Nullables2.NullableBaseType.NullSafeGet(IDataReader rs, String name)
   at NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String[] names, ISessionImplementor session, Object owner)
   at NHibernate.Type.AbstractType.Hydrate(IDataReader rs, String[] names, ISessionImplementor session, Object owner)
   at NHibernate.Loader.Loader.Hydrate(IDataReader rs, Object id, Object obj, ILoadable persister, ISessionImplementor session, String[][] suffixedPropertyColumns)
   at NHibernate.Loader.Loader.LoadFromResultSet(IDataReader rs, Int32 i, Object obj, Key key, String suffix, LockMode lockMode, ILoadable rootPersister, ISessionImplementor session)
   at NHibernate.Loader.Loader.InstanceNotYetLoaded(IDataReader dr, Int32 i, ILoadable persister, String suffix, Key key, LockMode lockMode, Key optionalObjectKey, Object optionalObject, IList hydratedObjects, ISessionImplementor session)
   at NHibernate.Loader.Loader.GetRow(IDataReader rs, ILoadable[] persisters, String[] suffixes, Key[] keys, Object optionalObject, Key optionalObjectKey, LockMode[] lockModes, IList hydratedObjects, ISessionImplementor session)
   at NHibernate.Loader.Loader.GetRowFromResultSet(IDataReader resultSet, ISessionImplementor session, QueryParameters queryParameters, IList hydratedObjects, Object optionalObject, Object optionalId, Key[] keys, Boolean returnProxies)
   at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Object optionalObject, Object optionalId, Object[] optionalCollectionKeys, Boolean returnProxies)
   at NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Object optionalObject, Object optionalId, Object[] optionalCollectionKeys, Boolean returnProxies)
   at NHibernate.Loader.Loader.LoadEntity(ISessionImplementor session, Object[] values, IType[] types, Object optionalObject, Object optionalID)
   at NHibernate.Loader.Loader.LoadEntity(ISessionImplementor session, Object id, IType identifierType, Object optionalObject, Object optionalIdentifier)
   at NHibernate.Loader.EntityLoader.Load(ISessionImplementor session, Object id, Object optionalObject, Object optionalId)
   at NHibernate.Loader.EntityLoader.Load(ISessionImplementor session, Object id, Object optionalObject)
   at NHibernate.Persister.EntityPersister.Load(Object id, Object optionalObject, LockMode lockMode, ISessionImplementor session)
   at NHibernate.Impl.SessionImpl.DoLoad(Type theClass, Object id, Object optionalObject, LockMode lockMode, Boolean checkDeleted)
   at NHibernate.Impl.SessionImpl.ImmediateLoad(Type clazz, Object id)
   at NHibernate.Proxy.LazyInitializer.Initialize()
   at NHibernate.Proxy.LazyInitializer.InitializeWrapExceptions()


Name and version of the database you are using:
Oracle 10g R2

The generated SQL (show_sql=true):


Debug level Hibernate log excerpt:
INFO


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

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.