【发布时间】:2025-12-25 08:20:08
【问题描述】:
在我的 grails 应用程序中,我有一个 sql 查询,它根据另一个数据库中的列从一个数据库中选择列数据。 因此,它在 SAME 查询中与 2 个数据库进行交互。
有没有办法根据从另一个数据库检索的数据从一个数据库中挑选数据。 在这种情况下,你会如何放下代码。
想法?
【问题讨论】:
标签: grails datasource
在我的 grails 应用程序中,我有一个 sql 查询,它根据另一个数据库中的列从一个数据库中选择列数据。 因此,它在 SAME 查询中与 2 个数据库进行交互。
有没有办法根据从另一个数据库检索的数据从一个数据库中挑选数据。 在这种情况下,你会如何放下代码。
想法?
【问题讨论】:
标签: grails datasource
找到了一条路。
创建了 2 个域对象,Cdisc 和 Tape。 cdisc 和磁带是 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 从另一个数据库的第二个表中获取数据。 为我工作。让我知道是否有其他解决方法。
【讨论】: