Java Grails:如何使用Grails约束定义主细节视图
我想用以下表格创建一个简单的主视图/详细视图:Java Grails:如何使用Grails约束定义主细节视图,java,grails,gorm,Java,Grails,Gorm,我想用以下表格创建一个简单的主视图/详细视图: create table MASTER_ID2 ( ID int not null, VALOR varchar(40), primary key (ID) ); create table DETAIL_ID2 ( ID int not null, ID_MASTER int not null
create table MASTER_ID2
(
ID int not null,
VALOR varchar(40),
primary key (ID)
);
create table DETAIL_ID2
(
ID int not null,
ID_MASTER int not null,
VALOR_DET char(40),
primary key (ID)
);
alter table DETAIL_ID2 add constraint FK_RDET5 foreign key (ID_MASTER)
references MASTER_ID2 (ID) on delete restrict on update restrict;
我有以下域类:
class MasterId2 {
Integer id
String valor
//
static hasMany = [details : DetailId2]
static mapping = {
table 'master_id2'
version false
id generator:'identity', column:'ID'
//
details column: 'id_master'
}
static constraints = {
id(max: 2147483647)
valor(size: 0..40)
}
String toString() {
return "${id}"
}
}
class DetailId2 implements Serializable {
Integer id
Integer id_master
String valor_det
//
MasterId2 master
static belongsTo = MasterId2
static mapping = {
table 'detail_id2'
version false
id generator:'identity', column:'ID'
}
static constraints = {
id(max: 2147483647)
valor_det(size: 0..40)
}
String toString() {
return "${id}"
}
}
但是细节视图没有指定外键
我的代码有什么问题
我做了一些改变
MasterId2类{
Integer id
String valor
//
static hasMany = [details : DetailId2]
static mapping = {
table 'master_id2'
// version is set to false, because this isn't available by default for legacy databases
version false
id generator:'identity', column:'ID'
//
details column: 'id_master'
}
}
类DetailId2实现可序列化{
Integer id
Integer id_master
String valor_det
//
//MasterId2 master
//static belongsTo = MasterId2
static belongsTo = [master: MasterId2]
static mapping = {
table 'detail_id2'
// version is set to false, because this isn't available by default for legacy databases
version false
id generator:'identity', column:'ID'
//
master insertable: false // enforce foreign key
master updateable: false // enforce foreign key
}
}
但是我得到了这份表格
Valordet->编辑
Idmaster*->编辑
Master*->不带值的列表框
有什么想法吗?将DetailId2的映射从
static mapping = {
table 'detail_id2'
version false
id generator:'identity', column:'ID'
}
到
您是在尝试映射到现有模式,还是让Grails为您创建模式?我用这种方式重新定义了细节类
static constraints = {
id(max: 2147483647)
valor_det(size: 0..40)
}
String toString() {
return "${id}"
}
static mapping = {
table 'detail_id2'
version false
id generator:'identity', column:'ID'
}
static mapping = {
table 'detail_id2'
version false
id generator:'identity', column:'ID'
master insertable: false // enforce foreign key
master updateable: false // enforce foreign key
}