Article View: alt.pl.comp.lang.csharp
Article #21802Re: [NH] złożone zapytanie na POCOsa
From: GrzybSon
Date: Thu, 21 Oct 2010 10:12
Date: Thu, 21 Oct 2010 10:12
70 lines
4071 bytes
4071 bytes
Użytkownik "Łukasz 'Maly' Ostrowski" <maly@USUNnemo.pl> napisał w wiadomości
news:122k9a15n9y6l.wf6dx1tmc9ee$.dlg@40tude.net...
> On Thu, 21 Oct 2010 10:53:22 +0200, GrzybSon wrote:
>> Poradziłem sobie z tym za pomocą CreateSQLQuery, ponieważ chodziło mi o
>> przykładową funkcjonalność wyszukania pojedynczego produktu, który ma
>> najwyższą cenę brutto przy założeniu, że w bazie mamy zapisaną tylko cenę
>> netto. Oczywiście produkt musi być wypisany wraz z ceną brutto.
>> Wartość VAT jest dostarczana z zewnątrz jako parametr do SQLa. Wiem, że
>> jest
>> to oczywiście podejście nie zgodne z założeniami NH, ale nie potrafię
>> przepisać użytego SQLa w MSSQL do wersji HQLowej czy ICriteria.
>
> Pokaż zapytanie SQL, pokombinujemy jak to zrobić na bazie
> CreateCriteria ;).
Prąciem bardzo:
const decimal ll2rad = (decimal)(Math.PI / 180.0);
IList<Gazeter> places = null;
latitude = latitude * ll2rad;
longitude = longitude * ll2rad;
GenericSingleton<DataProvider>.Instance.InTransaction(
session =>
{
places = session.CreateSQLQuery("select top 1 gg.*,
cast(6371.0*ACOS(SIN(latitudeRad)*SIN(:lat2)+COS(latitudeRad)*COS(:lat2)*COS(:lon2-longitudeRad))
as numeric(18,9)) as distance from gazeter gg order by distance asc")
.AddEntity(typeof(Gazeter))
.SetParameter<decimal>("lat2", latitude)
.SetParameter<decimal>("lon2", longitude)
.List<Gazeter>();
});
public class Gazeter
{
...
public virtual decimal Distance { get; set; }
}
gazeter.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="KenBIT.Nawigator.Domain.Gazeter,NH.Domain" table="gazeter"
lazy="true" schema="dbo">
<id name="Id" column="id" type="Decimal">
<generator class="assigned" />
</id>
<property name="Label" column="label" type="string" not-null="true" />
<property name="Latitude" column="latitude" type="Decimal"
not-null="true" />
<property name="Longitude" column="longitude" type="Decimal"
not-null="true" />
<property name="LatitudeRad" column="latitudeRad" type="Decimal"
not-null="true" />
<property name="LongitudeRad" column="longitudeRad" type="Decimal"
not-null="true" />
<property name="Distance" type="Decimal" update="false" insert="false"
/>
</class>
</hibernate-mapping>
>
> --
> Pozdrawiam,
> Łukasz 'Maly' Ostrowski. http://l3v.pl/
Technical Details
Message-ID:
<i9p3mq$8lg$1@news.onet.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.onet.pl!not-for-mailReferences:
<i9k3ui$q7n$1@news.onet.pl> <10ibcbohh6ur1.1fgo6k5548jv0$.dlg@40tude.net> <i9k8nf$8ue$1@news.onet.pl> <bgexfen4jbfy$.11u8y5rg62a7p$.dlg@40tude.net> <i9kekl$p4r$1@news.onet.pl> <86gdab82dzt0.1adnit32d5lgv$.dlg@40tude.net> <i9m5l2$3ar$1@news.onet.pl> <bpgf4ubaov0k.13jvgncwjp99j.dlg@40tude.net> <i9mgga$523$1@news.onet.pl> <us66lqfuk7re$.1abyyeze2psuc.dlg@40tude.net> <i9ov23$pt2$1@news.onet.pl> <122k9a15n9y6l.wf6dx1tmc9ee$.dlg@40tude.net>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.onet.pl!not-for-mail From: "GrzybSon" <grzybson@poczta.fm> Newsgroups: alt.pl.comp.lang.csharp Subject: Re: [NH] złożone zapytanie na POCOsa Date: Thu, 21 Oct 2010 12:12:41 +0200 Organization: http://onet.pl Lines: 72 Message-ID: <i9p3mq$8lg$1@news.onet.pl> References: <i9k3ui$q7n$1@news.onet.pl> <10ibcbohh6ur1.1fgo6k5548jv0$.dlg@40tude.net> <i9k8nf$8ue$1@news.onet.pl> <bgexfen4jbfy$.11u8y5rg62a7p$.dlg@40tude.net> <i9kekl$p4r$1@news.onet.pl> <86gdab82dzt0.1adnit32d5lgv$.dlg@40tude.net> <i9m5l2$3ar$1@news.onet.pl> <bpgf4ubaov0k.13jvgncwjp99j.dlg@40tude.net> <i9mgga$523$1@news.onet.pl> <us66lqfuk7re$.1abyyeze2psuc.dlg@40tude.net> <i9ov23$pt2$1@news.onet.pl> <122k9a15n9y6l.wf6dx1tmc9ee$.dlg@40tude.net> NNTP-Posting-Host: 62-121-97-180.home.aster.pl X-Trace: news.onet.pl 1287655962 8880 62.121.97.180 (21 Oct 2010 10:12:42 GMT) X-Complaints-To: niusy@onet.pl NNTP-Posting-Date: Thu, 21 Oct 2010 10:12:42 +0000 (UTC) X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.5512 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5512 X-RFC2646: Format=Flowed; Original X-Antivirus: avast! (VPS 101020-1, 2010-10-20), Outbound message X-Antivirus-Status: Clean MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit