Java Spring Roo在EntityManager的ActiveRecord.aj中生成错误
我使用的是Roo1.3.2。我有一个抽象类和一个具体实现,如下所示:Java Spring Roo在EntityManager的ActiveRecord.aj中生成错误,java,spring,spring-roo,Java,Spring,Spring Roo,我使用的是Roo1.3.2。我有一个抽象类和一个具体实现,如下所示: @RooJavaBean @RooToString @RooJpaActiveRecord(inheritanceType="TABLE_PER_CLASS") public abstract class Task { @Size(min = 2) private String name; public abstract void execute(Object... pa
@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 bug吗?这是一个检测
参数类型的bug。请你报告一下好吗
要解决此问题,只需使用推入式:
这是SpringRoo的一个要点:你总是可以用你自己的方式去做
祝你好运 谢谢你的回复,我会试试你的建议。我记录了一个错误。出于兴趣,您可以在这里找到它谢谢您的报告:)
public abstract class Task {
@Size(min = 2)
private String name;
public abstract void execute(Object... parameters);
// Push-in entityManager method from .aj file
public static final EntityManager entityManager() {
EntityManager em = new Task() {
public void execute(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;
}
}