如何在Spring ROO中为复杂(自定义)查找程序生成jspx和控制器文件?

时间:2011-01-29 22:00:09

标签: java spring-roo

我想创建一个复杂的自定义查找器并为其生成jspx文件。

我有一个名为Payment的类,由Spring ROO生成(请注意,实际代码已经过修改以简化操作):

package com.mystuff.orm;
...
@RooJavaBean
@RooToString
public class Payment {

   private Double someValue;
    ...

    // My Custom finder!!
   public static TypedQuery<PaymentSummary> findPaymentStatistics(Calendar fromDate, Calendar toDate) {
    if (fromDate == null || toDate == null)
        throw new IllegalArgumentException("Date period argument is required");
    EntityManager em = Payment.entityManager();
    TypedQuery<PaymentSummary> q = em.createQuery("select new com.mystuff.data.PaymentSummary(sum(o.someValue)) from Payment o where o.startDate >= :startDate and o.endDate <= :endDate", PaymentSummary.class);
    q.setParameter("startDate", fromDate);
    q.setParameter("endDate", toDate);
    return q;
   }

}

如何为此查询生成jspx文件?每当我尝试运行“finder add --finderName findPaymentStatistics”时,我收到一条错误消息:

动态查找程序无法匹配Payment.java中“findPaymentStatistics”查找定义的'findPaymentStatistics'标记

有什么想法吗?

由于

1 个答案:

答案 0 :(得分:1)

上面的“findPaymentStatistics”是您手工实施的方法吗?如果是这样,那么Roo won't be able to generate the front end for it。但是,如果您自己创建了查找程序代码,Roo将生成一个前端。 Roo应该能够生成类似于您手动编码的查找程序。试试这个:

roo> finder list --class com.mystuff.orm.Payment --filter start,end

这应该会给你一个Roo可以创建的动态查找器列表,其中包括Payment对象的'startDate'和'endDate'参数。