java - 如何显示基于外键的列表 groovy grails

标签 java grails groovy

我有两个表:RegionDistrict。因此,region_id 是表District 中的外键(一个region 有一个或多个district)。因此,当我在 list 上选择一个 region 时,我只想显示与该特定 region 关联的 districts 。 我的正确代码显示独立于 region 的所有 district:

def list = {
        params.max = Math.min(params.max? params.int('max') : 20, 100)
        [districtInstanceList : District.list(params),
        districtInstanceTotal: District.count()]
    } 

有人知道如何仅根据外键约束显示吗?我知道我可以在 list 闭包中编写一个 SQL 查询,但我想 grails 可能有办法做到这一点。 我的数据库是MySQLgrails版本是2.0.1。 我的域是:

class District {

def scaffold = true

String name
String description
String logo
String homepage
// defines the 1:n constrain with the Region table
static belongsTo = [region : Region]
// defines the 1: constraint with the Stream table
static hasMany = [streams : Stream]

static constraints ={
    name(blank:false, minSize:6, maxSize:30)
    description(blank: false, maxSize:100)
}

public String toString(){
    name
}
 }

最佳答案

您可以使用 GORM:

def list = {
    params.max = Math.min(params.max? params.int('max') : 20, 100)
    Region region = Region.get(params.id) // or what parameter you're using
    List districts = District.findAllByRegion(region)
    [districtInstanceList : districts,
    districtInstanceTotal: District.count()]
} 

您可以在这里阅读有关 Grails GORM 的信息:http://grails.org/doc/latest/guide/GORM.html

关于java - 如何显示基于外键的列表 groovy grails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11371869/

相关文章:

java - 将 char A-Z 转换为相应的 int。

java - Windows、Gradle 和 Cucumber 组合在生成报告时抛出 IOException

Jenkins : Groovy : Scripts not permitted to use method groovy. lang.GroovyObject getProperty java.lang.String

java - Lagom 中每个服务有两个或更多 ReadSideProcessor

java - 提示输入数组大小

java - 如何修复 boolean 方法中的死代码警告? (我++)

grails - Java类和Hibernate映射的Grails约束

grails - 具有数据响应的拦截器上的编译静态注释

json - 在 Grails 2.3.x 的域类上更改 @Resource 结果的 max 属性的默认值

json - 无法将JSONObject从Grails Controller 传递到Grails服务