1

有趣的问题:

我有一个看起来像的域类

class Dummy {
    String key = (''+new Date()).encodeAsSHA256()
}

当我尝试启动我的应用程序时,我收到一条很长的堆栈跟踪/错误消息说明

Invocation of init method failed; nested exception is org.hibernate.InstantiationException: could not instantiate test objectmad.Dummy
...
Caused by MissingMethodException: No signature of method: java.lang.String.encodeAsSHA256() is applicable for argument types: () values: []

现在,如果我删除.encodeAsSHA256(),以开发模式启动应用程序并重新插入编码,它可以工作:-)

所以基本上,代码在@运行时工作,但似乎@初始化时间,String类还没有为编码器准备好。

知道如何在不创建自定义构造函数的情况下解决此问题吗?

4

2 回答 2

3

找到了解决办法:编码器也可以直接调用,但是要知道正确的包...

import org.codehaus.groovy.grails.plugins.codecs.SHA256Codec

class Dummy {
    String key = SHA256Codec.encode(''+new Date())
}

...解决问题...

于 2012-10-03T19:14:31.870 回答
0

为什么不是构造函数?这属于构造函数...

于 2012-10-03T19:04:21.780 回答