2011-06-19 13 views
0

私の問題は単純にGrailsに入れます:ドメインクラスの翻訳のためのプラグインまたは例が必要です。ドメインクラス翻訳のためのORM Scheme/Plugin

概要私は、後ろに素敵なDBスキームで翻訳可能なエンタテイをしたいと思います。例えば

ドメインクラス1:ブック(ID、AUTHOR_ID、number_pages)予約ため

翻訳:(book_id、言語、タイトル、説明)

ドメインクラス2:著者(id、birthday)

(author_id、language、first_name、last_name)(たとえば、同じ著者が知られている

私がしたいこと:言語を知っていて、私はIDを持つ本を手に入れたいと思っています。そして、EAGERはその著者(当然ながら正しい翻訳をした本と著者)を取ります。または、たとえば、国/言語のfirst_nameによって知られている著者によるすべての書籍の検索。

GORMを使用して手動でどうしますか?

"ビジネスロジック"を隠すためのプラグインがありますか?

どのようにして書籍のすべての翻訳を簡単に取得できますか?

答えて

0

同じようGORMを使用する方法についてWhabがある - すなわちブックとBookTranslations帳とBookTranslationsの間には多くの翻訳に1を持つ2つのドメインオブジェクトになり、その後、あなたがBookTranslations.findAllByBookを行うことができ、基準クエリなど

私がこれを提案する理由は、あなたの記述(つまり、1対多)にエンティティ関係があるため、親/子/埋め込みスタイルのクラス階層があなたのために何かをするようなものではないからです。これはまた、フェッチ戦略を完全に制御します。[1]

ここで唯一の「秘密のソース」は、あなたが言語を表現する方法を標準化できるということです。たとえば、実際にこれらの行にUnicodeテキストが含まれていたり、標準メッセージファイルにマッピングされている場合は、BookTranslationテーブルの言語列のISO標準言語名を使用できます(例:英語は英語)。これにより、ロケールやメッセージファイルを自動的に解決できるGrails internationalizatinoの機能を直接活用することができます。また、国際化の難しさを軽減するtaglibやその他の機能もあります。

参照[2]

簡単な例では、次のようなものになるだろう(テストしていないので、いずれかのコンパイルエラーを容赦):

class Book { 
    String author 
    int numPages 
    static hasMany [ bookTranslations: BookTranslations] 
} 

class BookTranslations { 
    String language 
    String title 
    String description 
    static belongsTo = Book 
} 

def book = new Book(author:"test", numPages:20) 
book.save() 
def translation1 = new BookTranslations(language:"en-us", title:"How to Book", description:"A wonderful book") 
book.addToBookTranslations(translation1) 
def translation2 = new BookTranslations(language:"en-us", title:"Second How to Book", description:"A glorious book") 
book.addToBookTranslations(translation2) 

def results = BookTranslations.findAllByBook(book) 
// or .. 
results = book.bookTranslations 

運は、GORMの例を、それを持っているでしょうとしてGrailsドキュメンテーションの章は著者と書籍に関するものです。それはあなたが探しているものかもしれ同様に[2] http://grails.org/doc/latest/guide/10.%20Internationalization.html

を[1] http://grails.org/doc/latest/guide/5.%20Object%20Relational%20Mapping%20%28GORM%29.html#5.5.2.8%20Eager%20and%20Lazy%20Fetching

を[3]

を参照してください。[3] http://grails.org/doc/latest/guide/5.%20Object%20Relational%20Mapping%20%28GORM%29.html

+0

そして、どのようにしてIDを持つ本を手に入れることができますか? –

0

はちょうどこのpluginにつまずいた、らしいです。

+0

Grailsのバージョン「Grails Version \t 1.3> *」「1.3未満」を理解できませんでしたか?プラグインに最後にコミットしたのはいつ知ることができますか?どのようにアクティブにサポートされていますか? –

+0

それはちょうど更新された、それは私がそれに気づいた方法です。それを試してみてください。それが箱の外で働くなら、素晴らしいニュース!ほとんどの場合、あなたが望むものだけではなく、実際にはそれを解凍して、それを解凍して、あなた自身の目的のためにコードを使用してください。それはあなたに頭のスタートを与えるかもしれません、そして、あなたがそれに有用な追加を加えるなら、あなたのパッチを将来のためにプラグインに寄付することができます。それが役に立てば幸い! – wwwclaes