【发布时间】:2015-11-23 10:07:29
【问题描述】:
我使用的是 Roo 1.3.2。我有一个抽象类和一个具体实现如下:
@RooJavaBean
@RooToString
@RooJpaActiveRecord(inheritanceType="TABLE_PER_CLASS")
public abstract class Task {
@Size(min = 2)
private String name;
public abstract void execute(Object... parameters);
}
@RooJavaBean
@RooToString
@RooJpaActiveRecord
public class ImportLoadPlanTask extends Task {
@Size(min = 2)
private String svnFile;
@Override
public void execute(Object... parameters){
....
}
}
但是生成的 ActiveRecord.aj 文件会生成以下代码
public static final EntityManager Task.entityManager() {
EntityManager em = new Task() {
public void execute(java.lang.Object parameters) {
throw new UnsupportedOperationException();
}
}.entityManager;
if (em == null) throw new IllegalStateException("Entity manager has not been injected (is the Spring Aspects JAR configured as an AJC/AJDT aspects library?)");
return em;
}
IDE 的错误信息是:
The type new Task(){} must implement the inherited abstract Task.execute(Object ...)
如果我从 Task 类中删除 abstract 关键字,错误就会消失,因为 Roo 不会尝试生成上面列出的代码。
我怎样才能让它工作?这是 Roo 错误吗?
【问题讨论】:
标签: java spring spring-roo