JPA/Hibernate在Spring Roo finder方法中生成错误的SQL

JPA/Hibernate在Spring Roo finder方法中生成错误的SQL,spring,hibernate,jpa,roo,Spring,Hibernate,Jpa,Roo,我正在开发一个SpringWeb应用程序,其持久性层由SpringRoo生成的JPA实体组成,Hibernate作为持久性提供者,MySql作为底层数据库 在我的实体中,我有一个类检测,在Roo中生成了一个tstamp java.util.Date字段,如下所示: entity jpa --class ~.data.Detection ... field date --fieldName tstamp --type java.util.Date ... finder add findDetect

我正在开发一个SpringWeb应用程序,其持久性层由SpringRoo生成的JPA实体组成,Hibernate作为持久性提供者,MySql作为底层数据库

在我的实体中,我有一个类检测,在Roo中生成了一个tstamp java.util.Date字段,如下所示:

entity jpa --class ~.data.Detection
...
field date --fieldName tstamp --type java.util.Date
...
finder add findDetectionsByTstampBetween
@RequestMapping(value="/detections", method=RequestMethod.GET, params={"from", "to"}  )
当然,finder方法是在执行finder list之后选择的

在我的控制器代码中,在我调用的某个点:

List<Detection> detections = Detection.findDetectionsByTstampBetween(from, to).getResultList(); 

我希望where子句应该包含一个尾随和detection0_u.tstamp我终于找到了这个谜题的答案,事实证明,这个问题与JPA无关

问题在于,对持久性层的调用是通过以下映射插入到Rest服务控制器中的:

@ResponseBody
@RequestMapping(value="/detections", method=RequestMethod.GET, params="from, to" )
public Object getDetectionsInRange(
        @RequestParam(required=true) @DateTimeFormat(pattern="yyyy-MM-dd HH:mm") final Date from,
        @RequestParam(required=true) @DateTimeFormat(pattern="yyyy-MM-dd HH:mm") final Date to
        ) 
{
    ...
    List<Detection> detections = Detection.findDetectionsByTstampBetween(from, to).getResultList(); 
    ...
}
此错误导致控制器方法的另一个版本用于/检测。在第二个版本中,我调用了另一个finder方法,它似乎在Hibernate中生成了错误的SQL

@ResponseBody
@RequestMapping(value="/detections", method=RequestMethod.GET  )
public Object getDetections(
        @RequestParam(required=false, defaultValue="0") int days,
        @RequestParam(required=false, defaultValue="0") int hours,
        @RequestParam(required=false, defaultValue="0") int minutes
        ) 
{
    ...
    List<Detection> detections = Detection.findDetectionsByTstampGreaterThanEquals( ... ).getResultList(); 
    ...
}
@RequestMapping(value="/detections", method=RequestMethod.GET, params={"from", "to"}  )
@ResponseBody
@RequestMapping(value="/detections", method=RequestMethod.GET  )
public Object getDetections(
        @RequestParam(required=false, defaultValue="0") int days,
        @RequestParam(required=false, defaultValue="0") int hours,
        @RequestParam(required=false, defaultValue="0") int minutes
        ) 
{
    ...
    List<Detection> detections = Detection.findDetectionsByTstampGreaterThanEquals( ... ).getResultList(); 
    ...
}