Busqueda por ejemplo...

23 views
Skip to first unread message

Arlen

unread,
Mar 7, 2012, 8:39:49 PM3/7/12
to NHibernate-Hispano
Hola grupo. Necesito su ayuda en un tema que me tiene estancado. Estoy
realizando un proyecto de gestion de vehiculos con nhibernate en la
capa de datos. Necesito realizar una busqueda por un parametro dado
que puede coincidir con cualquiera de las propiedades de los
vehiculos. He probado varias variantes y ninguna me ha funcionado.
Quisiera saber si hay alguna forma de implementar esto a traves de la
instancia de ICriteria. En realidad agradesco cualquier sugerencia.
Salu2s.

nmar...@gmail.com

unread,
Mar 7, 2012, 8:56:45 PM3/7/12
to NHibernate-Hispano
Arlen, yo estuve usando busquedas por ejemplo te paso el c�digo que hasta
donde recuerdo estaba funcionando bien. El problema est� o estaba en que no
podes buscar propiedades que son colecciones.
Es una recopilaci�n de muchos que encontr� por internet.

/// <summary>
/// Devuelve todas las entidades almacenadas que se corresponden con la
entidad ejemplo provista.
/// </summary>
/// <param name="exampleInstance">Entidad ejemplo.</param>
/// <param name="propertiesToExclude">Propiedades a excluir.</param>
/// <returns>Listado de entidades.</returns>
public IList<T> ObtenerPorEjemplo(T exampleInstance, params string[]
propertiesToExclude)
{
IList<T> entidades;
var session = _sessionProvider.GetCurrentSession();

using (var tx = session.BeginTransaction())
{
ICriteria criteria = session.CreateCriteria(persitentType);
Example example = Example.Create(exampleInstance);

foreach (string propertyToExclude in propertiesToExclude)
{
example.ExcludeProperty(propertyToExclude);
}

criteria.Add(example);
entidades = criteria.List<T>();
tx.Commit();
}

return entidades;
}


Tambien te paso un links:
ttp://knol.google.com/k/nhibernate-chapter-13-criteria-queries

Espero te sirva.
Saludos.

-----Mensaje original-----
From: Arlen
Sent: Wednesday, March 07, 2012 10:39 PM
To: NHibernate-Hispano
Subject: [NHibernate-Hispano] Busqueda por ejemplo...

--
Para escribir al Grupo, h�galo a esta direcci�n:
NHibernat...@googlegroups.com
Para m�s, visite: http://groups.google.com/group/NHibernate-Hispano

Arlen

unread,
Mar 7, 2012, 10:37:52 PM3/7/12
to NHibernate-Hispano
Gracias por la pronta respuesta. El problema es que este ejemplo solo
funciona cuando sabes por cual o cuales propiedades vas a buscar. Por
ejemplo, supongamos que el vehiculo tenga 3 atributos:
anno_inicio_explotacion, anno_fabricacion y anno_registro. En el
buscador introduciria un año para comprobar contra todos los atributos
para ver cuales veh coinciden. Estoy buscando algo que funcione como
el Or en una query comun: select * from veh where
anno_inicio_explotacion = anno or anno_fabricacion = anno or
anno_registro = anno seria el equivalente a eso. Salu2s

Nicolás Marzoni

unread,
Mar 8, 2012, 8:08:50 AM3/8/12
to nhibernat...@googlegroups.com
No sabria decirte si en la busqueda por ejemeplo podes especificar de alguna manera que traiga las entidades que cumplan con al menos una condicion.
Quizá sea más facil hacer una consulta con Criteria, HQL o QueryOver.


--
Para escribir al Grupo, hágalo a esta dirección: NHibernat...@googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano



--
Nicolás Matías Marzoni

Arlen

unread,
Mar 8, 2012, 9:18:28 AM3/8/12
to NHibernate-Hispano
Estoy tratando con Criteria pero no encuentro la forma de especificar
que cumpla con al menos una condicion creo que al final tendre que
usar HQL o QueryOver. Gracias.

Angel Java Lopez

unread,
Mar 8, 2012, 9:26:11 AM3/8/12
to nhibernat...@googlegroups.com
Hola gente!

Hmmm... nunca use nada de esto... Pero por lo que entendi, Arlen, querias hacer un OR de varias condiciones.

Encontre dos formas:

Disjunctions (ver Conjuntions tmb)

La otra es Restriction.Or

Curiosamente, no lo vi aparecer estos temas en la pagina
estara en paginas siguientes?

Nos leemos!

Angel "Java" Lopez


Nicolás Marzoni

unread,
Mar 8, 2012, 11:32:33 AM3/8/12
to nhibernat...@googlegroups.com
Con criteria es Expresion.Or.
No tengo a mano ningun ejemplo. Pero en la referencia de nhibernate está.

user1981

unread,
Mar 12, 2012, 9:50:43 PM3/12/12
to NHibernate-Hispano


return criteria.Add(Expression.Like("Description",
productFilter.Description + "%"))
.CreateCriteria("Code").Add(Expression.Like("Value",
productFilter.Code + )).List<Product>();

_________________________
|class Product |
---------------------------------------
|string Description {get;set;} |
|Code Code {get;set:} |
_________________________
"Code" tiene una propiedad que se llama "Value" y es un string.

Dario Quintana

unread,
Mar 14, 2012, 4:33:45 PM3/14/12
to nhibernat...@googlegroups.com
HQL o Linq no podría ser?

--
Para escribir al Grupo, hágalo a esta dirección: NHibernat...@googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano



--
Dario Quintana
Reply all
Reply to author
Forward
0 new messages