İki tablo arasındaki anahtarın bir uyarı olmadığı birebir eşleme ile bir çift GORM etki alanı nesnesi oluşturmaya çalışıyorum uzun, bunun yerine bir UUID dizgisi/varchar. Her şeyi, bu konuda nasıl görüştüğüme dair tartışmalar yaptım, birkaç soru buldum, fakat kullanımın cevabı yok. İşte benim iki sınıfım, umarım birisi bana makul bir yöne işaret edebilir.GORM: bir anahtar olarak dize kullanarak bire bir tablo eşleştirmesi
Teşekkürler. vb mevcut veri ve tablolar, ilgili nedenlerle
class ItemLastChange {
static belongsTo = [item: Item]
static mapping = {
cache true
version false
id column: 'item_hash_msb', name: 'itemHashMsb'
item column: 'item_uuid', key: 'uuid', sqlType: 'text', type: 'text', insertable: false, updateable: false
}
static constraints = {
}
long itemHashMsb;
String itemUuid;
String itemMapCode;
String dbActionType;
String version;
Calendar modificationDate;
}
class Item {
static hasOne = [itemLastChange: ItemLastChange]
static mapping = {
cache true
version false
id column:'item_id'
columns {
itemLastChange column: 'uuid', lazy: false, key: 'item_uuid', type: 'text', insertable: false, updateable: false
}
}
static constraints = {
}
ItemLastChange itemLastchange
long id
String uuid
//other fields eliminated
}
... FK yapılabilir bir çözüm değil olarak ItemLastChange tablo ITEM_ID kullanmak zorunda (hepimiz olsaydı olduğu kadar ...)
aşağıdaki hata
Bu sonuçlar:
java.sql.SQLException: getLong() için geçersiz değer - '6890daf634873fbaac307cad258561be'
nerede değeri '6890daf634873fbaac307cad258561be' ItemLastChange tablosundan varchar UUID var.
Item
----
Field Type * Collation Null Key
item_id int(11) NO PRI
item_type_id int(11) {null} YES MUL
organization_id int(11) {null} YES MUL
item_map_code varchar(36) utf8_bin YES
uuid char(32) utf8_bin NO UNI
name varchar(64) utf8_bin NO
...
ItemLastChange
--------------
Field Type Collation Null Key
item_hash_msb bigint(20) NO PRI
item_uuid varchar(32) utf8_bin NO UNI
item_map_code varchar(36) utf8_bin NO
db_action_type varchar(64) utf8_bin NO
item_version varchar(16) utf8_bin NO
description longtext utf8_bin YES
ine_app_version varchar(16) utf8_bin YES
creation_date datetime NO
modification_date datetime NO
bu tablolar arasında hiçbir tanımlanmış FK ilişki vardır: Aşağıdaki yorumların Başına
, burada kaba bir şema var.
Şimdiden teşekkürler.
-Steighton
Yayınla tablolarının şema. –
Hangi hatayı alıyorsunuz? –
Üzgünüz, bu konudan bir dakikalığına uzaklaştım ... (ve bir şekilde cevaplarını görmedim ... her nasılsa, aldığım hata: java.sql.SQLException: getLong için geçersiz değer() - '6890daf634873fbaac307cad258561be' İlişki bir varchar anahtarıyla tanımlandığından, sistemin * ilişkisinin * uzun olması gerektiğini varsayarak varsayıyorum. –