在我的grails应用程序中,我有一个sql查询,它根据另一个数据库中的列从1个数据库中选择列数据。 因此,它与SAME查询中的2个数据库进行交互。
是否有办法根据从另一个数据库重新获取的数据从1个数据库中选择数据。 在这样的场景中,你将如何放下代码。
思想?
答案 0 :(得分:0)
找到了解决方法。
创建了2个域对象,Cdisc和Tape。 cdisc和tape是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()]
}
最后使用getter
显示表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从另一个数据库的第二个表中获取数据。 为我工作。如果有任何其他解决方法,请告诉我。