我有两个java界面:
public interface ProductRevision {
String getName();
public ComponentRevision getTiedComponent();
}
public interface ComponentRevision {
String getName();
}
然后我定义了两个Grails域类:
class GormProductRevision implements ProductRevision {
String name
GormComponentRevision tiedComponent
}
class GormComponentRevision implements ComponentRevision {
String name
}
没有编译错误,但是当我在控制器下面调用时:
class GormProductRevisionController {
def save() {
GormComponentRevision gormComponentRevision = new GormComponentRevision()
gormComponentRevision.name = 'Component'
gormComponentRevision.save()
GormProductRevision gormProductRevision = new GormProductRevision()
gormProductRevision.name = 'Product'
gormProductRevision.tiedComponent = gormComponentRevision
gormProductRevision.save()
}
}
它抛出异常
Property 'tiedComponent' has no setter method in class 'class GormProductRevision'. Stacktrace follows:
Message: Property 'tiedComponent' has no setter method in class 'class GormProductRevision'
Line | Method
->> 2138 | setSimpleProperty in org.apache.commons.beanutils.PropertyUtilsBean
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 1957 | setNestedProperty in ''
| 2064 | setProperty . . . in ''
| 858 | setProperty in org.apache.commons.beanutils.PropertyUtils
| 31 | save . . . . . . in GormProductRevisionController
| 195 | doFilter in grails.plugin.cache.web.filter.PageFragmentCachingFilter
| 63 | doFilter . . . . in grails.plugin.cache.web.filter.AbstractFilter
| 886 | runTask in java.util.concurrent.ThreadPoolExecutor$Worker
| 908 | run . . . . . . . in ''
^ 619 | run in java.lang.Thread
有人能帮助我吗?
答案 0 :(得分:0)
(对不起,我还没有'评论'的声誉。)
我也看到了这个bug的奇怪版本。我希望我能添加的是具体的。但对我来说,我有时只看到这个问题。我有一个实现两个接口的域类,并且所有接口都很好,包括在我的本地(Mac)机器上部署一个war到tomcat。
当我在tomcat上的ec2(ubuntu)中部署它时,有时会发生此错误,有时不会。我以为是我修改了域对象但是在'update'(而不是'create-drop')中的数据源存在一些不匹配。有一次我放弃了数据库,让它重新创建,问题就消失了。但我再次看到问题,我有一段时间没有触及该域类。
我找到了一个解决方法:从create-drop获取数据源更新,然后删除数据库(使用mysql或任何数据库客户端),然后让grails重新创建系统。在create-drop中可能存在问题吗?也许。这可能是我的大脑吗?绝对!
所以我不确定这是同一个问题,或者我的只是一些不同而且愚蠢的东西,但我想补充一点,我想我也看到了类似的东西。
BTW,这个类只是为了给你提供所有细节,它有一个用于文件上传的瞬态byte []字段。直到现在,它才被设置为 bindable 。而且,不要劫持线程,但“瞬态不再受默认约束”行为奇怪,可能与我的问题有关。 OP的原始问题没有非约束瞬态,对吗?