El archivo de configuración es el siguiente:
Código:
El mappeo Usuario.hbm.xml es: <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<reflection-optimizer use="false" />
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="dialect">NHibernate.Dialect.GenericDialect</property>
<property name="connection.driver_class">NHibernate.Driver.OleDbDriver</property>
<property name="connection.connection_string">Provider=VFPOLEDB;Data Source="C:\db_fox";Collating Sequence=general;Exclusive=false;Nulls=false</property>
<property name="show_sql">false</property>
<mapping assembly="Business.Entity" />
</session-factory>
</hibernate-configuration>
Código:
Y la entidad es: <?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Business.Entity" assembly="Business.Entity">
<class name="Usuario" table="usuarios">
<id name="id" column="id" type="int">
<generator class="identity"/>
</id>
<property name="User" column="user" not-null="true" type="string">
</property>
</class>
</hibernate-mapping>
Código:
Ahora cuando quiero ejecutar recuperar todos los registros de la tabla namespace Business.Entity
{
public class Usuario
{
private int _id;
public virtual int id
{
get { return _id; }
set { _id = value; }
}
private string _User;
public virtual string User
{
get { return _User; }
set { _User = value; }
}
}
}
usuarios ejecuto lo siguiente:
Código:
De esta manera funciona, pero si quiere traer un dato en particular ya ISessionFactory sessionFactory = new
Configuration().Configure().BuildSessionFactory();
ISession session = sessionFactory.OpenSession();
var usuarios = session.CreateQuery("from Usuario").List<Usuario>();
session.Close();
sea por id o por user (de la siguiente manera):
I
Código:
SessionFactory sessionFactory = new
Configuration().Configure().BuildSessionFactory();
ISession session = sessionFactory.OpenSession();
IQuery query = session.CreateQuery("from Usuario where user = :user");
query.SetParameter("user", "xAnubiSx");
Usuario usuario = query.UniqueResult<Usuario>(); <- se produce la excepción
session.Close();
la excepción que se produce es la siguiente:
Código:
y el trace: could not execute query [ select usuario0_.id as id0_, usuario0_.user as user0_ from usuarios usuario0_ where user=? ] Name:user - Value:xAnubiSx [SQL: select usuario0_.id as id0_, usuario0_.user as user0_ from usuarios usuario0_ where user=?]
Código:
No pude encontrar cual es el problema, ya que en MySql y MsSql en NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters) en NHibernate.Loader.Loader.ListIgnoreQueryCache(ISessionImplementor session, QueryParameters queryParameters) en NHibernate.Loader.Loader.List(ISessionImplementor session, QueryParameters queryParameters, ISet`1 querySpaces, IType[] resultTypes) en NHibernate.Hql.Ast.ANTLR.Loader.QueryLoader.List(ISessionImplementor session, QueryParameters queryParameters) en NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.List(ISessionImplementor session, QueryParameters queryParameters) en NHibernate.Engine.Query.HQLQueryPlan.PerformList(QueryParameters queryParameters, ISessionImplementor session, IList results) en NHibernate.Impl.SessionImpl.List(String query, QueryParameters queryParameters, IList results) en NHibernate.Impl.SessionImpl.List(String query, QueryParameters parameters) en NHibernate.Impl.QueryImpl.List() en NHibernate.Impl.AbstractQueryImpl.UniqueResult() en NHibernate.Impl.AbstractQueryImpl.UniqueResult[T]() en Business.Data.UsuarioAdapter.GetUsuario() en C:\Documents and Settings\Usuario\Mis documentos\Visual Studio 2005\Projects\NHibernateExample\Business.Data\UsuarioAdapter.cs:línea 24 en Business.Logic.Usuarios.GetUsuario() en C:\Documents and Settings\Usuario\Mis documentos\Visual Studio 2005\Projects\NHibernateExample\Business.Logic\Usuarios.cs:línea 15 en NHibernateExample.Program.Main(String[] args) en C:\Documents and Settings\Usuario\Mis documentos\Visual Studio 2005\Projects\NHibernateExample\NHibernateExample\Program.cs:línea 15 en System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) en System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) en Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() en System.Threading.ThreadHelper.ThreadStart_Context(Object state) en System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) en System.Threading.ThreadHelper.ThreadStart()
funcionan correctamente.
Saludos


