2011-01-20 10 views
24

私は、データベースへのバインディングを処理するためにNHibernateを使用しているプロジェクトを持っています。これまでは、ほとんどの場合、基本的にクエリを使用していました。今はもっと難しい質問に苦労しています。NHibernateの新しい部分に気付きました。特に私はSetProjectionについて興味がありますが、これはクエリを実行するときに重要と思われます。NHibernateの投影とは何ですか?

プロジェクションとはどのようなものでしょうか?通常、プロジェクションはどのように使用しますか?私は、投射はデータベースに関しては一般的な用語であると仮定しているので、もっと一般的な答えをも歓迎します。

+0

http://en.wikipedia.org/wiki/Projection_(relational_algebra) –

答えて

29

アントワンとしての投影は、変形です。クエリに関しては、

SELECT *PROJECTION* FROM Table 

*PROJECTION*はデータ変換の式です。

例:

SELECT * FROM ORDER 

基準当量は次のようになります

List orders = session.createCriteria(Order.class).list(); 

ここには突起が、我々は、変換せずにデータを取ります。

SELECT NAME FROM PRODUCT 

ここでは、Projectionクラスが使用されています。上記のクエリのように基準クエリに書き換えることができます。

List products=session.createCriteria(Product.class) 
    .setProjection(Projection.property(\"name\")) 
    .list(); 

だから我々は、単一の項目にすべての行をプロジェクト:nameフィールド。

は他の投影があります。例えばProjection.rowCount()COUNT(*)用)

+0

downvote – Andrey

+0

感謝の背後にある理由を聞いて喜んでいるだろう!明確化する。そしてはい - 私はグーグルで始めましたが、私は本当に答えを見つけませんでした。 Btw;私からのダウンワードはなかった。 +1 – stiank81

+3

あなたの答えの最初の行については、私はgoogle =の最初の結果からここに来ました。 –

6

私はNHibernateについてよくわかりませんが、一般的に投影法は別のセットにセットする。 SQLでは、SELECTとして表されます。

関連する問題