我为Grails实现了一个java域类,这里只是在Docs中描述:http://docs.grails.org/latest/guide/hibernate.html
package foo.bar;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
@Entity
public class A {
@Id
@GeneratedValue
private Long id;
@ElementCollection
private List<String> buz;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public void setBuz(List<String> buz) {
this.buz = buz;
}
public List<String> getBuz() {
return buz;
}
}
并且业务代码抛出异常:
def list = A.findAll()
list.each {
if (it.buz.contains("foobar")) {
result = it
}
it.buz - 抛出异常:Grails消息:
没有这样的属性:buz for class:foo.bar.A可能的解决方案:buz。
当我调用A.getBuz()时直接捕获异常:
错误2016-07-27 16:51:39,060 [http-bio-8080-exec-1] ERROR errors.GrailsExceptionResolver - 处理请求时发生MissingMethodException:[GET] / 没有方法签名:static foo.bar.A.getBuz()适用于参数类型:()值:[] 可能的解决方案:getBuz(),setBuz(java.util.List),getClass()。
无法理解,为什么Grails会搜索 static 方法getBuz()? 为什么按属性调用不起作用?
答案 0 :(得分:0)
你输了一个拼写错误:
public List<String> getBuz() {
returb buz;
}
应为return buz;