2016-03-29 21 views
1

多対1の関係を持つ2つのmysqlテーブルがあり、関係のマッピングテーブルを使用しています。それはあなたが見ることができるようにGORMマッピングテーブルの多対1

book_type_map 
Column   Datatype 
book_id  Char(36) 
book_type_id Char(36) 

book_type 
Column   Datatype 
book_type_id Char(36) 
book_type  Text 
default  TinyInt(1) 

books 
Column   Datatype 
book_id  Char(36) 

の下、bookテーブルまたはbook_type表がお互いを参照する列を持っていないようですが、私はbookからbook_typeにアクセスできるようにする必要があります。私はこれを実行すると、これらは私がBook.findAll()

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorExceptionを行うときに、私はこの例外を取得Book

class Book { 
    String id 
    BookType bookType 

    static mapping = { 
     table 'books' 
     id column: 'book_id', generator: 'uuid2' 
     bookType joinTable: [ name: 'book_type_map', 
       key: 'book_id', 
       column: 'book_type_id'] 
    } 
} 

class BookType { 
    String id 
    String type 
    Boolean default 

    static mapping = { 
     table 'book_type' 
     id column: 'book_type_id', generator: 'uuid2' 
     type column: 'book_type' 
    } 
} 

BookTypeのための私のドメインオブジェクトです:不明な列 ' 'フィールドリスト'のthis_.book_type_id

私のマッピングが正しくないと思います。もし誰かが私を正しい方向に向けることができたら、私はそれを感謝します。

+0

テーブル 'books'は、上記のテーブル構造と一致しません。これはタイプミスだと思いますか? –

+0

@ErikAhlswedeです。 – Sachin

答えて

0

一般に結合テーブルを持つことは、1対多または多対多の関係にのみ意味があります。この例では、ブックはBookTypeを1つしか持てないため、なぜ結合テーブルが必要ですか? BookTypeIdの列があるだけです。私はあなたが探しているものだと思い

は次のとおりです。

class Book { 
    String id 

    static hasMany = [bookType: BookType] 

    static mapping = { 
     table 'books' 
     id column: 'book_id', generator: 'uuid2' 
     bookType joinTable: [ name: 'book_type_map', 
       key: 'book_id', 
       column: 'book_type_id'] 
    } 
} 

あなたがこのテーブル構造に設定されている場合は、関係を反転することができdocs

詳細はEDIT

を参照してください。 (これのファンではない)。この構造は本当にわかりませんが、動作します:

class Book { 
    String id 

    static mapping = { 
     table 'books' 
     id column: 'book_id', generator: 'uuid2' 
    } 
} 

class BookType { 
    String id 
    String type 
    Boolean default 

    static hasMany = [books: Book]  

    static mapping = { 
     table 'book_type' 
     id column: 'book_type_id', generator: 'uuid2' 
     type column: 'book_type' 
     books joinTable: [ name: 'book_type_map', 
       key: 'book_type_id', 
       column: 'book_id'] 
    } 
} 
+0

1対多または多対多の関係には、結合表を使用するのが適切です。マッピングテーブルがある場合、多対1の関係をどのようにマップするべきかわかりません。提案はありますか? – Sachin

+0

私の提案を試しましたか? –

+0

私はそれを試してみました。これでBookTypeの単一のオブジェクトの代わりに 'BookType'のリスト/セットしか得ることができません。 – Sachin

関連する問題