1

Grailsに足を踏み入れているので、ご容赦ください...

これがトランジェントの良い使い方なのか、それとももっと良い方法があるのか​​ 疑問に思っています。

私が持っていると言う

class Author {

String name
String favoriteBook

static transients = ["favoriteBook"]

etc.

"Favorite Book" は、著者が発行した本の Book テーブルからのタイトルです。この検索を行うために使用したいデータベース ストアド プロシージャ (関数) があります。Author リスト (および表示) が実行されたときにオンザフライで評価するだけで、データベースに保持したくありません。リストについては、ソート可能であることが理想的です。

注: Oracle データベースを使用

これは明らかに私の現実世界の例ではありません.私は実際にレガシーデータベースの拡張に取り組んでおり、その構造に触れることはできません....利用できるストアドプロシージャがたくさんあります。そこで疑問が残ります...ドメイン クラスに、ストアド プロシージャの結果である値をデータベースから取得させたいのです。

Web でトランジェントを使用した例を見つけましたが、この方法ではありません... 誤用ですか? g&g および GORM 内でストアド プロシージャを利用するにはどうすればよいですか?

また、このhttp://www.craigburke.com/post/44771719252/oracle-stored-procs-in-grailsのようなストアド プロシージャの使用例を見つけ ましたが、ビューでこれを実装する方法がありません...

ティア...

K.

4

1 に答える 1

2

トランジェントとして宣言する代わりに、式としてマップします

class Author {
  String name
  String favoriteBook

  static mapping = {
    favoriteBook formula:'find_favorite_book(id)'
}

(または、カスタム関数を呼び出すために必要な SQL は何でも)。

リンクされたドキュメントからの引用

ORM DSL で表現される式は SQL であるため、他のプロパティへの参照は、オブジェクト モデルではなく永続性モデルに関連する必要があることに注意してください。

つまり、式で他のプロパティを参照する必要がある場合はsome_property、プロパティ名 ( ) ではなく、データベースの列名 ( ) を使用する必要がありますsomeProperty。命名規則を推測する必要がない場合は、数式で使用する列に対して、プロパティから列へのマッピングを明示的にすることを検討する必要があります。

static mapping = {
  someProperty column:'my_unusual_column'
}
于 2013-10-28T17:35:23.037 に答える