Grails Hibernate创建永久挂起

Grails Hibernate创建永久挂起,hibernate,grails,gorm,Hibernate,Grails,Gorm,我正在使用Hibernate(GORM)开发一个Grails应用程序,我有一个特定的域导致了下面的问题。问题是,当我想要创建“TemplateInputTransDisplayMap”的新实例时,我会在本地服务器上自然加载应用程序,然后导航到并单击“new TemplateInputTransDisplayMap”按钮,但这会导致页面挂起。我让它挂了一夜,最后6个小时后,由于无线上网中断,它超时了。当页面永远挂起,因此永远不会产生错误时,如何找出问题所在 class TemplateInputT

我正在使用Hibernate(GORM)开发一个Grails应用程序,我有一个特定的域导致了下面的问题。问题是,当我想要创建“TemplateInputTransDisplayMap”的新实例时,我会在本地服务器上自然加载应用程序,然后导航到并单击“new TemplateInputTransDisplayMap”按钮,但这会导致页面挂起。我让它挂了一夜,最后6个小时后,由于无线上网中断,它超时了。当页面永远挂起,因此永远不会产生错误时,如何找出问题所在

class TemplateInputTransDisplayMap {

static belongsTo = [templateInput:TemplateInput, templateStep:TemplateStep]
TemplateInput templateInput

Long id
String tsStep
String tiParameterName 
String displayLabel
String defaultValue
String tiMapParameter
String sqlQuery
String selectClause
String whereClause
Long fetchCount
String transTable
String columnName
String displayed
String delimeter
String valueProc
String uiDisplay
String uiSql
String xPath
String isNameValue
String label

static mapping = {

    table 'TI_TRANS_DISP_MAP'
    version false

    id column: 'TI_SYSID', generator: 'foreign', params: [property: 'templateInput']

    templateInput column: 'TI_SYSID', insertable: false, updateable: false
    templateStep column: 'TI_TS_SYSID'
    tsStep column: 'TS_STEP'
    tiParameterName column: 'TI_PARAM_NAME'
    displayLabel column: 'DISPLAY_LABEL'
    defaultValue column: 'DEFAULT_VALUE'
    tiMapParameter column: 'TI_MAP_PARAM'
    sqlQuery column: 'SQL_QUERY'
    selectClause column: 'SELECT_CLAUSE'
    whereClause column: 'WHERE_CLAUSE'
    fetchCount column: 'FETCH_COUNT'
    transTable column: 'TRANS_TABLE'
    columnName column: 'COLUMN_NAME'
    valueProc column: 'VALUE_PROC'
    uiDisplay column: 'UI_DISPLAY'
    uiSql column: 'UI_SQL'
    xPath column: 'XPATH'
    isNameValue column: 'IS_NAME_VALUE'

}

static constraints = {
    tsStep(maxSize:250, blank:true, nullable:true)
    tiParameterName(maxSize:250, blank:true, nullable:true)
    displayLabel(maxSize:250, blank:true, nullable:true)
    defaultValue(maxSize:1500, blank:true, nullable:true)
    tiMapParameter(maxSize:250, blank:true, nullable:true)
    sqlQuery(maxSize:1500, blank:true, nullable:true)
    selectClause(maxSize:100, blank:true, nullable:true)
    whereClause(maxSize:1000, blank:true, nullable:true)
    fetchCount(maxSize:3, blank:true, nullable:true)
    transTable(maxSize:250, blank:true, nullable:true)
    columnName(maxSize:30, blank:true, nullable:true)
    displayed(maxSize:1, blank:true, nullable:true)
    delimeter(maxSize:30, blank:true, nullable:true)
    valueProc(maxSize:500, blank:true, nullable:true)
    uiDisplay(maxSize:10, blank:true, nullable:true)
    uiSql(maxSize:900, blank:true, nullable:true)
    xPath(maxSize:2000, blank:true, nullable:true)
    isNameValue(maxSize:3, blank:true, nullable:true)
    label(maxSize:100, blank:true, nullable:true)
}
}

获取应用程序的线程转储以了解发生了什么

在unix上,您只需向运行应用程序的java进程发送SIGQUIT(3)信号

kill -3 process_id_of_grails_jvm
threaddump转到stdout,默认情况下,它是Tomcat中的catalina.out

JDK中还有jstack命令来执行线程转储。您可以使用jps命令获得可访问java进程的列表