-->
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.  [ 3 posts ] 
Author Message
 Post subject: "Incorrect syntax near" only cleared by an IISRese
PostPosted: Thu Oct 26, 2006 2:59 pm 
Newbie

Joined: Thu Oct 26, 2006 2:49 pm
Posts: 11
We've been using NHibernate 1.0 wrap in a couple classes so it can be stored in HTTPContext. We also run under .Net 2.0.

We were using is fine for month until we release to production. Every couple of days we start getting "incorrect syntax near" exceptions. Once the exceptions begin we have to do an IIS Reset to clear them. The full query is contained below but I'll pull out the faulty snippet here:

explicitmo0_.EnterpriseUserID as 3_1016789_1_,
explicitmo0_.EnterpriseModuleID as 2_1016789_1_,

As you see the alias are missing the fragment column name and they begin with a number.

Any help on this would be greatly appreciated.


Hibernate version:
1.0

Mapping documents:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0" >
<class name="Isaf.Identity.EnterpriseUser, Isaf" table="Isim..EnterpriseUser" connection="Isim" >
<id name="ID" type="Guid" unsaved-value="2B39D2CB-BB19-4742-B747-4842A5569F36">
<column name="EnterpriseUserID" sql-type="uniqueidentifier" not-null="true" unique="true" index="PK_EnterpriseUser" />
<generator class="guid.comb" />
</id>
<property name="UserName" type="String">
<column name="UserName" sql-type="varchar" not-null="true" unique="false" />
</property>
<property name="Password" type="String">
<column name="Password" sql-type="varchar" not-null="true" unique="false" />
</property>
<property name="Salt" type="String">
<column name="Salt" sql-type="varchar" not-null="true" unique="false" />
</property>
<property name="Email" type="String">
<column name="Email" sql-type="varchar" not-null="false" unique="false" />
</property>
<property name="SecretEmail" type="String">
<column name="SecretEmail" sql-type="varchar" not-null="false" unique="false" />
</property>
<property name="Phone" type="String">
<column name="Phone" sql-type="varchar" not-null="false" unique="false" />
</property>
<property name="DsnPhone" type="String">
<column name="DsnPhone" sql-type="varchar" not-null="false" unique="false" />
</property>
<property name="FirstName" type="String">
<column name="FirstName" sql-type="varchar" not-null="false" unique="false" />
</property>
<property name="MiddleName" type="String">
<column name="MiddleName" sql-type="varchar" not-null="false" unique="false" />
</property>
<property name="LastName" type="String">
<column name="LastName" sql-type="varchar" not-null="false" unique="false" />
</property>
<property name="PasswordExpiresOn" type="ICC.Persistence.NullDateTime, ICC.Persistence">
<column name="PasswordExpiresOn" sql-type="datetime" not-null="false" unique="false" />
</property>
<property name="Locked" type="Boolean" insert="false" update="false">
<column name="Locked" sql-type="bit" not-null="false" unique="false" />
</property>
<property name="PasswordRetryCount" type="Byte">
<column name="PasswordRetryCount" sql-type="tinyint" not-null="false" unique="false" />
</property>
<property name="PasswordRetryResetsOn" type="ICC.Persistence.NullDateTime, ICC.Persistence">
<column name="PasswordRetryResetsOn" sql-type="datetime" not-null="true" unique="false" />
</property>
<property name="PasswordRetryLocked" type="Boolean">
<column name="PasswordRetryLocked" sql-type="bit" not-null="false" unique="false" />
</property>
<property name="AdminLocked" type="Boolean">
<column name="AdminLocked" sql-type="bit" not-null="false" unique="false" />
</property>
<property name="encryptedSsn" type="String" access="field" >
<column name="Ssn" sql-type="varchar" not-null="false" unique="false" />
</property>
<property name="IsInRegistration" type="Boolean">
<column name="IsInRegistration" sql-type="bit" not-null="false" unique="false" />
</property>
<property name="RegistrationApproved" type="Boolean">
<column name="RegistrationApproved" sql-type="bit" not-null="false" unique="false" />
</property>
<property name="CreatedOn" type="ICC.Persistence.NullDateTime, ICC.Persistence" insert="false" update="false">
<column name="CreatedOn" sql-type="datetime" not-null="false" unique="false" />
</property>
<property name="ModifiedOn" type="ICC.Persistence.NullDateTime, ICC.Persistence">
<column name="ModifiedOn" sql-type="datetime" not-null="false" unique="false" />
</property>
<property name="Active" type="Boolean">
<column name="Active" sql-type="bit" not-null="false" unique="false" />
</property>
<bag name="ModuleUserAdmins" inverse="true" lazy="true">
<key column="EnterpriseUserID"/>
<one-to-many class="Isaf.Security.ModuleUserAdmin, Isaf"/>
</bag>
<bag name="Roles" table="EnterpriseUserRole" lazy="true">
<key column="EnterpriseUserID" />
<many-to-many class="Isaf.Security.Role, Isaf" column="RoleID" />
</bag>
<bag name="Versions" table="EnterpriseUserVersion" cascade="none" order-by="EffectiveDate desc" lazy="true">
<key column="EnterpriseUserID" />
<one-to-many class="Isaf.Identity.EnterpriseUserVersion, Isaf" />
</bag>
<bag name="ExplicitModulePermissions" inverse="true" lazy="true">
<key column="EnterpriseUserID"/>
<one-to-many class="Isaf.Security.ModulePermission, Isaf"/>
</bag>
<bag name="UserModuleRegistrations" inverse="true" lazy="true">
<key column="EnterpriseUserID"/>
<one-to-many class="Isaf.Registration.UserModuleRegistration, Isaf"/>
</bag>
<many-to-one name="ParentOrganization" class="Isaf.Identity.ParentOrganization, Isaf">
<column name="ParentOrganizationID" sql-type="uniqueidentifier" not-null="false"/>
</many-to-one>
<many-to-one name="Paygrade" class="Isaf.Identity.Paygrade, Isaf">
<column name="PaygradeID" sql-type="uniqueidentifier" not-null="false"/>
</many-to-one>
<many-to-one name="Salutation" class="Isaf.Identity.Salutation, Isaf">
<column name="SalutationID" sql-type="uniqueidentifier" not-null="false"/>
</many-to-one>
<many-to-one name="Rank" class="Isaf.Identity.Rank, Isaf">
<column name="RankID" sql-type="uniqueidentifier" not-null="false"/>
</many-to-one>
</class>
</hibernate-mapping>

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0" >
<class name="Isaf.Security.Role, Isaf" table="Isim..Role" connection="Isim" >
<id name="ID" type="Guid" unsaved-value="2B39D2CB-BB19-4742-B747-4842A5569F36">
<column name="RoleID" sql-type="uniqueidentifier" not-null="true" unique="true" index="PK_Role" />
<generator class="guid.comb" />
</id>

<property name="Name" type="String">
<column name="Name" sql-type="varchar" not-null="true" unique="false" />
</property>

<!--
<bag name="Users" table="EnterpriseUserRole" lazy="true">
<key column="RoleID" />
<many-to-many class="Isaf.Identity.EnterpriseUser, Isaf" column="EnterpriseUserID" />
</bag>
-->

</class>
</hibernate-mapping>

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0" >
<joined-subclass name="Isaf.Security.BuiltinRole, Isaf" table="Isim..BuiltinRole" extends="Isaf.Security.Role, Isaf" connection="Isim">
<key>
<column name="RoleID" sql-type="uniqueidentifier" not-null="true" unique="true" index="PK_BuiltinRole" />
</key>
</joined-subclass>
</hibernate-mapping>

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0" >
<joined-subclass name="Isaf.Security.ModuleRole, Isaf" table="Isim..ModuleRole" extends="Isaf.Security.Role, Isaf" connection="Isim">
<key>
<column name="RoleID" sql-type="uniqueidentifier" not-null="true" unique="true" index="PK_ModuleRole" />
</key>

<property name="EnterpriseModuleID" type="ICC.Persistence.NullGuid, ICC.Persistence" insert="false" update="false">
<column name="EnterpriseModuleID" sql-type="uniqueidentifier" not-null="false" unique="false" />
</property>
<property name="ModuleManaged" type="Boolean">
<column name="ModuleManaged" sql-type="bit" not-null="false" unique="false" />
</property>
<many-to-one name="EnterpriseModule" class="Isaf.EnterpriseModule, Isaf">
<column name="EnterpriseModuleID" sql-type="uniqueidentifier" not-null="false"/>
</many-to-one>

</joined-subclass>

</hibernate-mapping>


Code between sessionFactory.openSession() and session.close():
It's happening on a Lazy Loaded property.

ISession session = factory.OpenSession();
if(null!=factory)
{
factory.Close();
}

Full stack trace of any exception that occurs:
System.Data.SqlClient.SqlException: Line 1: Incorrect syntax near '3'.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()
at NHibernate.Impl.BatcherImpl.ExecuteReader(IDbCommand cmd)
at NHibernate.Loader.Loader.GetResultSet(IDbCommand st, RowSelection selection, ISessionImplementor session)
2006-10-26 14:51:33,561 [424] WARN NHibernate.Util.ADOExceptionReporter [RequestID=915c9551-874b-48da-af00-92457140017f; UserName=; SessionID=] - System.Data.SqlClient.SqlException: Line 1: Incorrect syntax near '3'.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()
at NHibernate.Impl.BatcherImpl.ExecuteReader(IDbCommand cmd)
at NHibernate.Loader.Loader.GetResultSet(IDbCommand st, RowSelection selection, ISessionImplementor session)

Name and version of the database you are using:

The generated SQL (show_sql=true):
SELECT explicitmo0_.EnterpriseUserID as Enterpri3___, explicitmo0_.ModulePermissionID as ModulePe1___,
explicitmo0_.ModulePermissionID as ModulePe1_1_,
case when [explicitmo0__1_].ModulePermissionID is not null then 1 when [explicitmo0__2_].ModulePermissionID is not null
then 2 when explicitmo0_.ModulePermissionID is not null then 0 end as clazz_1_,

explicitmo0_.EnterpriseUserID as 3_1016789_1_,
explicitmo0_.EnterpriseModuleID as 2_1016789_1_,

enterprise1_.EnterpriseModuleID as Enterpri1_0_, enterprise1_.UserAccessPolicyID as UserAcce2_0_
FROM Isim..ModulePermission explicitmo0_
left outer join Isim..DeniedModulePermission [explicitmo0__1_] on explicitmo0_.ModulePermissionID=[explicitmo0__1_].ModulePermissionID
left outer join Isim..GrantedModulePermission [explicitmo0__2_] on explicitmo0_.ModulePermissionID=[explicitmo0__2_].ModulePermissionID
left outer join Isim..EnterpriseModule enterprise1_ on explicitmo0_.EnterpriseModuleID=enterprise1_.EnterpriseModuleID
WHERE explicitmo0_.EnterpriseUserID=@p0

Debug level Hibernate log excerpt:


Last edited by djroberts@cox.net on Thu Oct 26, 2006 5:23 pm, edited 3 times in total.

Top
 Profile  
 
 Post subject:
PostPosted: Thu Oct 26, 2006 3:03 pm 
Newbie

Joined: Thu Oct 26, 2006 2:49 pm
Posts: 11
I'm trying to boil down some specifics. We also cache the object "EnterpriseUser" in HTTPContext.

The error seems to happen on where we use polymorphic lazy loaded collections. It first happens on call to:

EnterpriseUser.Roles.Count

after that it happens on

EnterpriseUser.ExplicitModulePermissions which is called on login so it essentially disables all users from getting into the system.

We wrap NHibernate for HTTPContext and multi connection support. We followed the patterns presented on these forums.


Top
 Profile  
 
 Post subject:
PostPosted: Thu Oct 26, 2006 8:04 pm 
Newbie

Joined: Thu Oct 26, 2006 2:49 pm
Posts: 11
Any help plz?


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 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.