一对多 - 显示与父ID相关的子项列表

时间:2012-01-10 18:01:16

标签: grails grails-plugin grails-domain-class

我有两个域类

1)

package opfwflowmonitor
import java.io.Serializable;
class OpfWF_Entry implements Serializable{

String name
Date create_date
static hasOne=[siteName:OpfWF_SiteName, currentStepStatus:OpfWF_CurrentStepStatus,currentStepName:OpfWF_CurrentStepName]
static hasMany = [historySteps:OpfWF_HistoryStepsInfo]

static mapping = {

            table name: "OS_WFENTRY", schema: "GSI"
            version false
            cache true
            historySteps cache:true 
            sort id:"desc"
            columns{
                    name column:'NAME'
                    create_date column:'CREATE_DATE'

    }


}
}

package opfwflowmonitor
import java.util.Date;
class OpfWF_HistoryStepsInfo {

Long entry_id
Long action_id
Long step_id
Date start_date
Date finish_date
String status

static belongsTo = [historyEntry: OpfWF_Entry]

static mapping = {
    table name: "OS_HISTORYSTEP", schema: "GSI"
    version false
    cache true
    historyEntry cache: true
    sort id:"desc"
    id generators: 'assigned'
    columns{
        id column:'ID'
        action_id column:'ACTION_ID'
        step_id column:'STEP_ID'
        start_date column:'START_DATE'
        finish_date column:'FINISH_DATE'
        status column:'STATUS'
    //  ENTRY_ID column:'ENTRY_ID'

        }
    historyEntry column:'entry_id'
    historyEntry insertable:false
    historyEntry updateable:false
}

String toString() { "$id" }
}

当我选择OpfWF_Entry时,如何显示所有属性的所有historystep的列表?

当用户点击OpfWF_Entry表的记录列表时,如何获取子列表(包含历史表的所有属性)。

2 个答案:

答案 0 :(得分:0)

我不完全确定我是否理解你的问题。拥有OpfWF_Entry对象时,属性应该是可见的,但如果在您的情况下无法访问它,则可以创建一个方法来公开您想要的任何属性。

控制器:

def showAllHistorySteps = {
   def opfwfEntry = OpfWF_Entry.findById(params.id)
   def historySteps = opfwfEntry.historySteps
   historySteps.each {
      println "Step: ${it.toString()}"
   }
   return [historySteps:historySteps]
}

域:

class OpfWF_HistoryStepsInfo {
   def getAllProperties() {
      // code to return a list of properties you want
   }
}

查看:

 < g:each in="historySteps" > <br/>
   < g:set var="listOfProps" value="${it.getAllProperties()"/>  <br/>
   // do what you want with listOfProps  <br/>
< /g:each> <br/>

答案 1 :(得分:0)

好的 - 回答我的问题。我在这里如何解决它。

1)
        从OpfWF_Entry的列表视图中,我调用了historyStepInfo-Controller的searchme操作(搜索我自己添加的操作)。

2)
         在historyStepInfoController中 - 我添加了searchme动作 - 使用params.id(从opfEntry的列表视图传递)在所有匹配行的hisotryStepInfo域内找到

def opfWF_HistoryStepsInfoInstanceList = OpfWF_HistoryStepsInfo.findAllByEntry_id(params.id)

render(view:'list',model:[opfWF_HistoryStepsInfoInstanceList:opfWF_HistoryStepsInfoInstanceList,opfWF_HistoryStepsInfoInstanceTotal:opfWF_HistoryStepsInfoInstanceList.count()])

3)
         添加了HistoryStepsInfoInstanceList以列出historyStepInfo“in”-varibale

的视图

我让所有孩子都与父母选择相关。

这项工作适用于一切。搜索,儿童名单等等。