🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: alt.pl.comp.lang.csharp
Article #21802

Re: [NH] złożone zapytanie na POCOsa

#21802
From: GrzybSon
Date: Thu, 21 Oct 2010 10:12
70 lines
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-mail
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>

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