Spring Roo时间戳问题:1.2.2作为日期,1.2.4作为日历

时间:2013-12-13 22:23:45

标签: java eclipse spring aop spring-roo

我正在尝试构建一个Spring Roo(1.2.2)项目。从干净的SCM结账,mvn clean install很好地构建。

但是,当我将项目导入SpringSource Tool Suite IDE(与m2eclipse和Roo 1.2.4一起打包)时,Eclipse会调用roo更新POM的<roo.version>,然后更新实体方面。在此之后,具有java.util.Date参数/返回类型的所有方法都不再有效,因为编译会在symbol not found字段上产生Date个错误。

如何让Roo生成类型为Date而不是Calendar的方面?

错误日志

[ERROR] /Users/jjzabkar/project/src/main/java/com/so/FooBar.java:209:0::0 The method setTokenExpires(Calendar) in the type FooBar is not applicable for the arguments (Date)  
[ERROR] error at account.setLastaccessTime(Calendar.getInstance().getTime());

研究

旧POM

<roo.version>1.2.2.RELEASE</roo.version>

更新了POM

<roo.version>1.2.4.RELEASE</roo.version>

FooBar.java实体

@RooJavaBean
@RooToString
@RooJpaActiveRecord(versionField = "", table = "foo_bar")
@RooDbManaged(automaticallyDelete = true)
public class FooBar {
}

Roo版本1.2.2的 BEFORE

privileged aspect FooBar_Roo_DbManaged {
    ...
    @Column(name = "lastaccess_time")
    @NotNull
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "M-")
    private Date FooBar.lastaccessTime;

    public Date FooBar.getLastaccessTime() {
        return lastaccessTime;
    }

    public void FooBar.setLastaccessTime(Date lastaccessTime) {
        this.lastaccessTime = lastaccessTime;
    }

}

Roo版本1.2.4的方面 AFTER

privileged aspect FooBar_Roo_DbManaged {
    ...
    @Column(name = "lastaccess_time")
    @NotNull
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "MM")
    private Calendar FooBar.lastaccessTime;

    public Calendar FooBar.getLastaccessTime() {
        return lastaccessTime;
    }

    public void FooBar.setLastaccessTime(Calendar lastaccessTime) {
        this.lastaccessTime = lastaccessTime;
    }

}

1 个答案:

答案 0 :(得分:1)

在更新到Roo 1.2.4之前,你应该将Date字段插入到.java中,因为Roo不会再次生成它们,也不会将类型更改为Calendar。