如何在 Grails 中使用复合键访问行?
How to access rows with composite keys in Grails?
我正在使用脚手架在 Grails 3 中为 Oracle 12c 数据库创建一个简单的 CRUD,而对于具有显式整数 ID 列的简单 tables,如下所示:
class Config {
int id
String name
String type
String value
String description
int status
static constraints = {
/* constraints constraints constraints */
}
static mapping = {
sort 'name'
version false
id column: 'CONFIGID', name:'id', generator:'sequence', params:[sequence: 'CONFIG_SEQ']
}
}
一切正常,您可以通过列表视图中自动生成的 link 以及 [=12= 形式的显式 URL 访问给定行的脚手架视图],只要我有一个 table 和这样一个复合键:
class AliasFrequencyDict implements Serializable{
String frequency
String unit
String description
String lang
static constraints = {
/* constraints constraints constraints */
}
static mapping = {
sort 'frequency'
version false
id composite: ['frequency', 'unit', 'lang']
}
}
...您无法再访问这些行(或者我不知道如何访问)。脚手架不再为列表视图中的视图生成 links 并尝试通过 URL 访问它,如 aliasFrequencyDict/show/0/D/PL
(这恰恰是 /<view>/<frequency>/<unit>/<lang>
中指定的复合 id 的定义)导致 404.
如何在使用复合 ID 时访问相关的节目、编辑等页面?
How do I access the relevant show, edit etc. pages when using a
composite ID?
有很多方法可以做到。例如,对于 show
你可以有一个看起来像这样的 URL 映射...
"/aliasFreqDict/$freq/$unit/$language"(controller: 'aliasFreqDict', action: 'show')
然后有相应的控制器动作...
class AliasFreqDictController {
AliasFreqService aliasFreqService
def show(String freq, String unit, String language) {
// have a service method that looks up the instance by these properties...
respond aliasFreqService.find(freq, unit, language)
}
}
希望对您有所帮助。
我正在使用脚手架在 Grails 3 中为 Oracle 12c 数据库创建一个简单的 CRUD,而对于具有显式整数 ID 列的简单 tables,如下所示:
class Config {
int id
String name
String type
String value
String description
int status
static constraints = {
/* constraints constraints constraints */
}
static mapping = {
sort 'name'
version false
id column: 'CONFIGID', name:'id', generator:'sequence', params:[sequence: 'CONFIG_SEQ']
}
}
一切正常,您可以通过列表视图中自动生成的 link 以及 [=12= 形式的显式 URL 访问给定行的脚手架视图],只要我有一个 table 和这样一个复合键:
class AliasFrequencyDict implements Serializable{
String frequency
String unit
String description
String lang
static constraints = {
/* constraints constraints constraints */
}
static mapping = {
sort 'frequency'
version false
id composite: ['frequency', 'unit', 'lang']
}
}
...您无法再访问这些行(或者我不知道如何访问)。脚手架不再为列表视图中的视图生成 links 并尝试通过 URL 访问它,如 aliasFrequencyDict/show/0/D/PL
(这恰恰是 /<view>/<frequency>/<unit>/<lang>
中指定的复合 id 的定义)导致 404.
如何在使用复合 ID 时访问相关的节目、编辑等页面?
How do I access the relevant show, edit etc. pages when using a composite ID?
有很多方法可以做到。例如,对于 show
你可以有一个看起来像这样的 URL 映射...
"/aliasFreqDict/$freq/$unit/$language"(controller: 'aliasFreqDict', action: 'show')
然后有相应的控制器动作...
class AliasFreqDictController {
AliasFreqService aliasFreqService
def show(String freq, String unit, String language) {
// have a service method that looks up the instance by these properties...
respond aliasFreqService.find(freq, unit, language)
}
}
希望对您有所帮助。