[英]Grails domain class has no setter method after implement interface
我有两个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
有人可以帮我吗?
(对不起,我还没有“评论”的声誉。)
我也看到了这个错误的奇怪版本。 我希望我能补充的是具体的。 但是对我来说,有时我只会看到这个问题。 我有一个实现两个接口的域类,并且都很好地进行了测试,包括在本地(Mac)计算机上向tomcat部署war。
当我将它部署在tomcat的ec2(ubuntu)中时,有时会出现此错误,有时不会。 我以为是我修改了域对象,但是在“更新”(不是“创建-放置”)中的数据源存在一些不匹配。 有一次,我删除了数据库并让它重新创建,问题就消失了。 但是我又遇到了问题,而且我已经有一段时间没有接触过该域类了。
我找到了一种解决方法:将数据源从create-drop进行更新,然后删除数据库(使用mysql或任何您的数据库客户端),然后让grails重新创建系统。 create-drop可能有问题吗? 也许。 难道是我的大脑? 绝对!
所以我不确定这是同一个问题,还是我的只是一个不同而又愚蠢的问题,但是我想补充一点,我想我也看到了类似的事情。
顺便说一句,该类仅是为了向您提供所有详细信息,它具有用于文件上传的瞬态byte []字段。 直到现在,这还没有设置为可绑定 。 而且,不是要劫持线程,而是“瞬态不再默认绑定”的行为很怪异,可能与我的问题有关。 OP的原始问题没有非绑定瞬态,对吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.