GORM:可以查询州和县

时间:2014-12-22 21:42:22

标签: grails gorm

目前使用Grails 2.43。我有两个域类(州和县),以及州和县的两个选择下拉列表。

当选择该状态时,GORM finder是否有办法让动态查询返回状态中的特定县。从而排除所有其他不在选定国家的县?

表单元素:

<g:select name="locationState" class="form-control" from="${....State.list().sort{it.orderNumber}}">

<g:select name="locationCounty" class="form-control" from="${...State.FindByName(it.orderNumber).counties}">

以下是示例类:

class State {

    static hasMany = [county:County]

    String name
    String value
    int orderNumber = 0

    static constraints = {
        name nullable:false, maxSize:50, blank:false
        value nullable:false, maxSize:100, blank:false
    }

    String toString(){
        "$value"
    }

    static mapping = {
        table 'state'
        cache: 'read-write'
        columns{
            id column:'id'
            name column:'name'
            value column:'value'
            orderNumber column:'order_number'
        }
        id generator: 'assigned'
    }
}


class County {

    State state
    String county

    static constraints = {
        state nullable:false
        county nullable:false, maxSize:100, blank:false
    }

    String toString(){
        "${state.name} - $county"
    }

    static mapping = {
        table 'county'
        cache: 'read-write'
        columns{
            id column:'id'
            county column:'county'
            state column:'state_id'
        }
        id generator: 'assigned'
    }
}

1 个答案:

答案 0 :(得分:0)

这取决于您与域类的关联方式。如果State hasMany County(ies)和/或County属于State,则可以使用动态查找器。例如:

// All Counties 
County.list()
// All States
State.list()
//All Counties in State Vermont
State.findByName("Vermont").counties
//State for a county
County.findByName("Chittenden").state

如果你试图制作一个有点动态的表单,你可以先显示你的状态下拉列表,并在选择状态之前使县下拉列表处于非活动状态。然后你可以进行异步调用来获取State的县,或者如果已经加载了完整的对象,你可以用selectedState.counties填充County选择框。

请参阅GORM对象关系映射:http://grails.org/doc/latest/guide/GORM.html#domainClasses