2013-10-28 70 views
1

讓我的腳溼使用Grails,所以請多多包涵......Grails的瞬態作爲查找

只是想知道這是否是一個很好地利用短暫的,或者如果有一個更好的辦法。

說我有

class Author { 

String name 
String favoriteBook 

static transients = ["favoriteBook"] 

etc. 

「最喜歡的書」是從一個由作者出版的書的書籍表的標題。我有一個數據庫存儲過程(函數),我想用來做這個查找。我不希望它堅持到數據庫,只是在執行作者列表(和顯示)時才進行評估。對於清單,理想情況下它也是可排序的。

注:使用Oracle datbase

這顯然不是我的現實世界的例子,我實際工作的延伸的遺留數據庫,並不能碰那個結構....我有很多的存儲過程,可以被利用。所以問題仍然存在......我希望我的域類從數據庫中獲取一個存儲過程的結果。

我在網上找到使用瞬態的例子,但不是這樣...我濫用它嗎?如何利用g和GORM中的存儲過程?

我也覺得例如使用存儲過程,像這樣的 http://www.craigburke.com/post/44771719252/oracle-stored-procs-in-grails 但缺少如何在視圖中實現這個的......

TIA ...

K.

回答

2

相反宣稱它是一個瞬態我將它映射爲formula

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' 
} 
+0

這個工作完美...太簡單了讓我看到我的想法!謝謝! – Bean