0

私はWebアプリケーションにGrailsを使用しており、いくつかの値を使用して計算を行うデータベースクエリを作成する必要があります。これらの値は、私が選択しているテーブルとgrails-applicationからのものです。計算の値も結果に渡す必要があります。計算自体とすべての値を返すことは、魅力のように機能しています。結果は次のようになります(テーブルからすべての列を選択するだけです)。

[[19, 15, false, 49.04757, 8.37106, 1.0, 'some text', false, 0, 0.03360229674009102]]

さて...私が今しなければならないことは、私が得ているすべての結果のオブジェクトを作成することです。これはデータベースのクエリに使用している休止状態のセッションであるため、クエリの実行に「addEntity(className)」を追加するオプションがあります-次のようになります。

def list = sessionFactory.currentSession.createSQLQuery(query).addEntity(myClass).list()

さらに良い-オブジェクトを手動で作成する必要はありません。しかし、問題は、計算された値(上のコードスニペットの最後のエントリ)に関する情報が失われることです。

これを達成するために私が想像できる2つの方法があります:hibernateは、addEntity(myClass)のようないくつかのオプションを提供します-オブジェクトを作成するのと同じように-計算の値を追加します

もう1つの方法は、sql-query内で結果に名前を付けることであるため、次のようになります。

[[id:19, version:15, some_bool: false, first_double: 49.04757, second_double: 8.37106, some_floatvalue: 1.0, text: 'some text', another_bool: false, calculation_result: 0, 0.03360229674009102]]

いずれにせよ、私は両方のテクニックにあまり精通していないので、何を検索すればよいのかさえわかりません。

全体として、私が望んでいるのは、クラスのインスタンス/オブジェクトを作成し、さらに計算結果を取得するための簡単でクリーンな方法です。これを達成するためのさらなるアイデアがある場合-私はすべてのヒントとヒントに感謝します

いくつかの流行語でさえ、これを機能させるのに役立ちます。

私は自分の問題について明確になっていることを願っています-教えてくれない場合;)

前もって感謝します

4

1 に答える 1

0

代わりに、結果マッピングをさらに定義するために使用できるorg.hibernate.SQLQuery#addEntitywhichorg.hibernate.SQLQuery#addRootを返します。org.hibernate.SQLQuery.RootReturn3.6 で追加されました。これは Grails が使用しているものであると確信しています。

于 2012-05-21T21:30:29.877 に答える