Wednesday, May 30, 2007

Intersystem Cache NHibernate Driver/Dialect

For a project we had to use Intersystem's Cache.

I've create the NHibernate Dialect and Driver (based on the Java version as a source).

I don't really know where to post this files so here they go : Download NHibernate Cache Driver/Dialect.

I now need to learn:
* Where to post so this get's added to Nhibernate.
* Before that step : are there any tests for new dialects (should i write them, how? )

My tests show 1 problem:
When trying to create a parameterized query using system.guid as parameter type i get this exception: CacheException : Type out of range: System.Guid

Failures:
1) Standard_BoLayer.Tests.Email_AddressesTest.FetchTest : NHibernate.ADOException : could not execute query
[ SELECT this_."Email Address-ID" as Email1_7_0_, this_."Member_id" as Member2_7_0_, this_."System #" as System3_7_0_, this_."Mail@" as Mail4_7_0_, this_."Include in Mailing" as Include5_7_0_ FROM "dbo"."Email Addresses" this_ WHERE this_."Email Address-ID" = ? ]
Positional parameters: 0 aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
[SQL: SELECT this_."Email Address-ID" as Email1_7_0_, this_."Member_id" as Member2_7_0_, this_."System #" as System3_7_0_, this_."Mail@" as Mail4_7_0_, this_."Include in Mailing" as Include5_7_0_ FROM "dbo"."Email Addresses" this_ WHERE this_."Email Address-ID" = ?]
----> InterSystems.Data.CacheClient.CacheException : Type out of range: System.Guid
at NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters)