2010-11-12 71 views
0

在我的grails應用程序中,我有一個sql查詢,它根據另一個數據庫中的列從1個數據庫中選擇列數據。 因此它正在與SAME查詢中的2個數據庫進行交互。在Grails的相同查詢中使用2個數據庫

有沒有一種方法可以根據從另一個數據庫檢索的數據從1個數據庫中選擇數據。 在這樣的情況下,你將如何放下代碼。

想法?

回答

0

找到了一條途徑。

創建了2個域對象,Cdisc和Tape。 012isccdisc和磁帶是2個不同的數據庫中的2個表。這兩個表都有一個共同的主Id,player_id。 這個想法是在一個頁面上顯示來自這兩個表的數據。

Cdisc.groovy

package tune 

class Cdisc { 
String name 
double cId 
String id 

static mapping = { 
    table 'cdisc' 
    version false  

    columns { 
     id column:'player_id' 
     cId column:'c_id' 
     name column: 'name' 
    } 
} 
} 

Tape.groovy

package tune 

class tape { 

    String id 
String tapeDate 
String comments 


static mapping = { 
    table 'tape' 
    version false  
    columns {  
     id column:'player_id'  
     tapeDate column:'tape_date' 
     comments column: 'comments' 
} 

} 



public def getName(){  
    def cdisc = Cdisc.findById(this.id)  
    return cdisc.name 
} 

} 

TapeController.groovy

def list = { 
    params.max = Math.min(params.max ? params.int('max') : 10, 100) 

    [tapeInstanceList: tape.findAllByCommentsLike('%Test%'),  tapeInstanceTotal: Tape.count()] 

} 

最後使用吸氣

顯示從表CDISC名list.gsp

<g:each in="${tapeInstanceList}" status="i" 
     var="tapeInstance"> 
     <tr class="${(i % 2) == 0 ? 'odd' : 'even'}"> 

      <td><g:link action="edit" id="${tapeInstance.id}"> 
       ${fieldValue(bean: tapeInstance, field: "id")} 
      </g:link></td> 

      <td> 
      ${fieldValue(bean: tapeInstance, field: "tapeDate")} 
      </td> 

      <td> 
      ${fieldValue(bean: tapeInstance, field: "comments")} 
      </td> 

      <td>${tapeInstance.getName()}</td> 


    </g:each> 

因此,我們使用getter從另一個數據庫的第二個表中獲取數據。 爲我工作。讓我知道是否有任何其他解決方法。

相關問題