我目前正在 Ubuntu 上使用 Play Framework 2.2.2 编写一个新的 Java 项目。我正在尝试建立一个非常简单的类层次结构,它允许不同的 db-persistable 元素从一个公共 BaseEntity 类继承公共字段,例如 id、created_at、deleted_at 等,以避免重写相同的样板。
我目前正在使用的示例如下所示。
@Entity
public class User extends BaseEntity {
@Id
public int id;
@Constraints.Required
public String email;
@Constraints.Required
public IUser.Status status;
public String activationCode;
public User()
{
...
}
}
为了进行实验,我创建了一个简单的基类,其中包含一个新属性名称。这编译得很好:
@MappedSuperclass
public abstract class BaseEntity extends Model {
protected String name;
public String getName()
{
return this.name;
}
public void setName(String value)
{
this.name = value;
}
public BaseEntity()
{
}
}
现在,当 BaseEntity 类不包含 name 字段或 getset-ers 时,EBean 可以成功地将 Entity 保存到 db。一旦我添加了带有 getter 和 setter 的字段,在尝试保存实体时 Play 崩溃并出现以下异常:
java.lang.NoSuchMethodError:models.User._ebean_getni_name()Ljava/lang/String; 在models.User._ebean_getField(User.java:1) 在com.avaje.ebeaninternal.server.reflect.EnhanceBeanReflect$Getter.get(EnhanceBeanReflect.java:162) .....
删除 getset-ers 或将它们移动到基类会导致相同的异常。我已经在网上不知疲倦地寻找显示我做错了什么的例子,但还没有找到任何可以修复它的东西。我敢肯定这很简单。任何人都可以帮忙吗?
问候。