在我的代码中,我有带有一些字符串字段的“Book”类和具有一些静态方法的“BookKey”字段,只有一个具有字符串“key”值的字段。我的问题是如何仅在“Book”表中存储此“键”值(而不与BookKey ID的关系)?
我不想在数据库中创建表“BookKey”。我只希望表“Book”具有列:“Key”,“Title”和“Description”,其中“Key”是BookKey对象的String值。
我知道如果我不想创建表,则必须使用static瞬变= ['key'],但是我不知道如何将来自不同对象的值存储在一个表中。
class BookKey{
public final String key;
public BookKey(){
this.key="key-undefined"
}
public BookKey(String key){
this.key=key;
}
static BookKey generate(){
String uuid = UUID.randomUUID().toString();
String key="book-"+uuid;
return new BookKey(key)
}
static BookKey from(String key){
return new BookKey(key)
}
}
public class Book {
BookKey key=BookKey.generate();
String title;
String description;
static transients = ['key']
static mapping = {
key column: 'bKey'
}
}
最佳答案
将BookKey类放入src/groovy
中,并将您的域类配置为使用embedded。来自文档的示例:
class Person {
String name
Country bornInCountry
Country livesInCountry
static embedded = ['bornInCountry', 'livesInCountry']
}
// If you don't want an associated table created for this class, either
// define it in the same file as Person or put Country.groovy under the
// src/groovy directory.
class Country {
String iso3
String name
}