class - Grails:将类文字存储在数据库中

标签 class grails gorm

我想在数据库中存储某种东西应该是字符串还是整数。我的幻想是这样的:

Class FantasyClass{
  String someInfo
  Class whichClass
}

然后我可以这样称呼它:
def thisThing = new FantasyClass(someInfo:'lalala',whichClass:String)

有没有解决此功能的方法?

我可以去的地方:
def getAThing = FantasyClass.get(1)
assert getAThing.whichClass == String
assert 'thisIsAString' instanceof getAThing.whichClass  //THIS IS WHAT I REALLLLLLY WANT!!!

最佳答案

您可以使用asType方法

def getAThing = FantasyClass.get(1)
assert getAThing.whichClass == String
assert 'thisIsAString'.getClass() == getAThing.someInfo.asType(getAThing.whichClass)

这是一个更通用的示例:
def value = 123
def otherThing = new FantasyClass(
   someInfo: value.toString(),
   whichClass: value.getClass()).save()

assert otherThing.someInfo.asType(getAThing.whichClass) instanceof Integer

您可以在域类中添加一个辅助方法,该方法将为您将String转换为指定的类型:
def getTypedValue() {
   someInfo?.asType(foo)
}

然后您可以执行以下操作:
assert otherThing.typedValue == 123

关于class - Grails:将类文字存储在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9590686/

相关文章:

java - 如何在匿名类中引用更高的类

c++ - 派生类中不同方法的多态性

c++在派生类中定义复制赋值

java - 是否有基于 Java 的预打包解决方案用于用户注册、cookie 检测等?

json - 带有RESTful服务的JAX-RS与UrlMappings的Grails

grails - 删除hasMany关系中的关联

java - 如何检查类名是否有效?

mysql - Grails 不会生成多对多中的所有 SQL 表

grails - GORM如何确保相关对象属性的唯一性

grails - Grails以一对一关系创建客户端