2010-11-12 2 views
0

В моем приложении grails у меня есть запрос sql, который выбирает данные столбцов из 1 базы данных на основе столбца в другой базе данных. Таким образом, он взаимодействует с 2 базами данных в ТОЧНОМ запросе.Используйте 2 базы данных в том же запросе в Grails

Есть ли способ выбрать данные из 1 базы данных на основе данных, полученных из другой базы данных. В таком сценарии, как бы вы положили код.

Мысли?

ответ

0

Найденный путь через.

Создано 2 объекта домена, Cdisc и Tape. cdisc и tape - 2 таблицы в двух разных базах данных. Обе таблицы имеют общий первичный идентификатор, 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> 

Таким образом, мы используем геттер для получения данных из второй таблицы в другой базе данных. Работал для меня. Дайте мне знать, есть ли другое решение.

Смежные вопросы