java - to_number - hql top 1
Cómo seleccionar desde HQL (4)
Soy nuevo en HQL y tengo una expresión SQL que necesito convertir pero no puedo seleccionar que la declaración SQL sea:
select SenseDate as Time,SenseValue as Value
from UserData
where NetworkID = ''23''
and IODeviceID = ''129''
and SenseDate >= DateAdd("d",-1, GETDATE())
and SenseDate<=GETDATE()
Puedo ejecutar esta parte en HQL sin problemas:
from UserData
where NetworkID = ''23''
and IODeviceID = ''129''
and SenseDate >= DateAdd(d,-1, GETDATE())
and SenseDate<=GETDATE()
Sin embargo, solo quiero que se SenseDate
SenseValue
valores de SenseDate
y SenseValue
, ¿podría alguien mostrarme cómo seleccionarlos cuando intente agregar select SenseDate, SenseValue
etc. sigo recibiendo errores en Netbeans?
Creo que HQL tiene la palabra clave "nueva" ahora.
seleccione familia nueva (madre, compañero, descendiente) de Eg.DomesticCat como madre se une a madre.Mate como compañero se unió a mother.Kittens como offspr
Similar a las proyecciones / transformadores de resultados en el mundo Criteria.
Parece que necesita hacer lo que hibernate llamadas proyecciones. Aquí hay información sobre cómo hacer proyecciones en HQL:
http://www.devarticles.com/c/a/Java/Hibernate-HQL-in-Depth/1/
Puede seleccionar campos / columnas usando HQL. Se parece a lo siguiente:
select
SenseDate,
SenseValue
from
UserData
where
NetworkID = ''23''
and
IODeviceID = ''129''
and
SenseDate >= DateAdd(d, -1, GETDATE())
and
SenseDate <= GETDATE()
Cuando ejecutas esto, recibirás una lista de matrices de objetos:
final List<Object[]> values = query.list();
Cada elemento en la lista representa una fila encontrada. La matriz en sí contiene los dos campos seleccionados en el mismo orden en que los declaró en la declaración.
Tendrás que usar algo como proyecciones.
Esto significa que tendrá que crear una clase que contenga los resultados que intenta recuperar.
En tu caso, esto podría verse más o menos así:
public class SenseUserData
{
public DateTime SenseDate
{
get;
private set;
}
public Decimal SenseValue
{
get;
private set;
}
public SenseUserData( DateTime date, Decimal value )
{
this.SenseDate = date;
this.SenseValue = value;
}
}
Luego, deberá informar a NHibernate sobre la existencia de esta clase. Usted puede hacer eso, ''importándolo''. Entonces, esto significa que no tiene que crear un archivo de mapeo, solo tiene que hacer esto en un archivo hbm:
<import class="myclassname" />
Y luego, puedes hacer esto en HQL:
select new SenseUserData (SenseDate, SenseValue) from UserData