0

レガシーデータベースを使用するという問題に直面しました。リレーションで接続された 2 つのテーブルがあります。

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);

テーブル サブスクライバーの連絡先:

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 主キーの一部です。

2 つの 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 generate-all *.

次に、新しい 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

Subscriberscontacts ドメイン クラスにsubscribercode属性を追加したくありません。追加すると、作成フォームにsubscribercode編集フィールドが表示されるからです。

4

1 に答える 1

0

それを追加して、足場から隠すだけです:

class Subscriberscontacts {
  String subscribercode
  ...
  static constraints = {
    subscribercode display: false // or editable: false
  }
}
于 2012-10-15T11:26:55.197 に答える