2012-11-07 10 views
8

मैं विरासत डेटाबेस के साथ काम कर रहा हूं और एक जॉइन-टेबल के साथ कई से अधिक सहयोग प्राप्त कर रहा हूं जिसे मैंने बड़े पैमाने पर हल किया है क्योंकि मैपिंग ठीक काम कर रहे हैं । लेकिन एक अतिरिक्त कॉलम है और पुस्तक के मामले में, लेखक मॉडल कहता है कि nm_author_books में 'रॉयल्टी' नामक फ़ील्ड होता है। प्रश्न यह है कि मैं इस क्षेत्र को किसी भी दिशा से कैसे एक्सेस करूं?GORM कई अतिरिक्त मैपिंग और एक अतिरिक्त फ़ील्ड के साथ संयुक्त

class Book { 
    String title 
    static belongsTo = Author 
    static hasMany = [authors: Author] 
    static mapping = { authors joinTable: [name: "mm_author_books", key: 'mm_book_id' ] } 
} 
class Author { 
    String name 
    static hasMany = [books: Book] 
    static mapping = { books joinTable: [name: "mm_author_books", key: 'mm_author_id'] } 
} 

nm_author_book तालिका है [nm_book_id, nm_author_id, रॉयल्टी] क्या रॉयल्टी का उपयोग करने के तरीका है?

उत्तर

7

आप एक डोमेन ऑब्जेक्ट बना सकते हैं कि तालिका में शामिल मॉडल जो पुस्तक और लेखक के लिए मानचित्रण को बदलने के बजाय आपको AuthorBookRoyalty डोमेन पर इंगित करते हैं।

Class AuthorBookRoyalty { 
    Author author 
    Book book 
    Long royalty 
} 

class Book { 
    String title 
    static belongsTo =Author 
    Static hasMany[authors: AuthorBookRoyalty] 
} 

लेखक के लिए समान करें और अब आप रॉयल्टी से निपट सकते हैं। आपको अपने वर्तमान डेटाबेस में मानचित्र बनाने के लिए शामिल तालिका में मैपिंग समायोजित करने की आवश्यकता हो सकती है।

+0

धन्यवाद - यह काम कर सकता है! – rks

+0

उम्मीद है कि यह बिल्कुल वही नहीं है लेकिन इसे कम से कम आपको समान कार्यक्षमता देना चाहिए। –

11

मूल विचार से परिवर्तन होता है 1 कई-से-अनेक 2 के लिए कई-टू-वन: एक पुस्तक कई BookAuthorDetail है और एक लेखक, आप कर सकते हैं BookAuthorDetail द्वारा रॉयल्टी का उपयोग करने के कई BookAuthorDetail

class Book { 
    String title 

    static hasMany = [details: BookAuthorDetail] 
} 
class Author { 
    String name 
    static hasMany = [details: BookAuthorDetail] 
} 

class BookAuthorDetail { 
    String royalty 
    static belongsTo = [book: Book, author: Author] 
} 

है करें: BookAuthorDetail.findAllByBookAndAuthor(bookInstance, authorInstance)

+0

कृपया उत्तर के रूप में "धन्यवाद" को न जोड़ें। एक बार आपके पास पर्याप्त [प्रतिष्ठा] (http://stackoverflow.com/help/whats-reputation) हो जाने के बाद, आप [प्रश्नों और उत्तरों को वोट दें] (http://stackoverflow.com/help/privileges/vote- ऊपर) कि आप मददगार पाया। – Beterraba

+0

मैंने अपना जवाब अपडेट किया है, तो क्या आप मेरे लिए अन-डाउन-वोट कर सकते हैं? मैं अपनी उत्तर समस्या को ठीक करने की कोशिश कर रहा हूं – hakuna1811

+0

हाय वहाँ। मैंने इसे कम नहीं किया। मैं इसके बजाय आपको ऊपर उठाऊंगा। – Beterraba

संबंधित मुद्दे