0
我遇到了使用遗留数据库的问题。 我与关系连接的两个表:一个 - 到 - 多: 表订阅者:grails与遗留数据库。外键作为主键的一部分
create table SUBSCRIBERS
(
SUBSCRIBERCODE VARCHAR2(100) not null,
SUBSCRIBERNAME VARCHAR2(100),
ACTIVE CHAR(1) default 'Y' not null
)
alter table SUBSCRIBERS
add constraint SUBSCRIBERS_PK primary key (SUBSCRIBERCODE);
表Subscriberscontacts:
create table SUBSCRIBERSCONTACTS
(
SUBSCRIBERCODE VARCHAR2(100) not null,
CONTACTTYPE VARCHAR2(100) not null,
ORDER_ID NUMBER not null,
CONTACTVALUE VARCHAR2(100) not null,
ACTIVE CHAR(1) default 'Y' not null
)
alter table SUBSCRIBERSCONTACTS
add constraint SUBSCRIBERSCONTAC1 primary key (SUBSCRIBERCODE, CONTACTTYPE, ORDER_ID);
alter table SUBSCRIBERSCONTACTS
add constraint SUBSCRIBER_SUBS_FK foreign key (SUBSCRIBERCODE)
references SUBSCRIBERS (SUBSCRIBERCODE);
表SUBSCRIBERSCONTACTS具有复合主键 - (SUBSCRIBERCODE,CONTACTTYPE,ORDER_ID) 。它还具有对SUBSCRIBERS(SUBSCRIBERCODE)的外键引用。 SUBSCRIBERCODE是SUBSCRIBERSCONTACTS主键的一部分。
我创建了两个GORM域类:
package tmsconf
class Subscribers {
String id
String subscribercode
String subscribername
String active
static hasMany = [subscriberscontacts:Subscriberscontacts]
static mapping = {
version false
id generator: 'assigned', name: 'subscribercode'
}
static constraints = {
subscribercode(size:1..100, blank: false)
subscribername(size:0..100, nullable: true)
active(size:1..1, blank: false)
}
public void setSubscribercode(String subscribercode){
this.subscribercode = subscribercode
this.id = subscribercode
}
String toString() {
subscribercode
}
}
package tmsconf
class Subscriberscontacts implements Serializable{
String id
Subscribers subscribers
String contacttype
Long order_id
String contactvalue
String active
static mapping = {
version false
id composite: ["subscribercode", "contacttype","order_id"], generator: "assigned"
subscribers name : 'subscribercode', column : 'subscribercode', insertable: false, updateable: false
}
public String getSubscribercode()
{
subscribers
}
static constraints = {
contacttype(size:1..100, blank: false)
contactvalue(size:1..100, blank: false)
active(size:1..1, blank: false)
}
public void setSubscribercode(String subscribercode){
this.subscribercode = subscribercode
this.id = subscribercode
}
String toString() {
subscribercode
}
}
我生成的所有要求:Grails的生成,所有*。
然后我尝试运行新的Grails应用程序,并有例外:
Caused by PropertyNotFoundException: Could not find a getter for subscribercode in class tmsconf.Subscriberscontacts
->> 334 | innerRun in java.util.concurrent.FutureTask$Sync
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 166 | run in java.util.concurrent.FutureTask
| 1110 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 603 | run in java.util.concurrent.ThreadPoolExecutor$Worker
^ 722 | run . . . in java.lang.Thread
我不想subscribercode属性添加到Subscriberscontacts域类,因为如果我这样做,我将得到subscribercode编辑字段创建表单。
感谢名单!我添加了订户代码。现在,我在向订阅者添加记录时出现错误:[订阅者代码]класса[class tmsconf.Subscriberscontacts]неможетиметьзначениеnull – Leonid
+',nullable:true',因为它默认为false。 –
我有错误:不允许NULL列“SUBSCRIBERCODE”; SQL语句:插入到订户联系人(活动,联系人值,订户代码,联系人类型,订单号)值。 ** Subscribercode - 是主键和外键的一部分** – Leonid