面对查询错误的问题为“HSQL数据库:意外的令牌:END语句”

时间:2013-05-02 12:21:16

标签: java jira active-objects

我创建了一个activeobject查询,如下所示:

ao.find(IP.class, Query.select().where("user=? AND start>=? AND end<=?",u,datefieldl,datefieldl))

但它给了我以下错误:

  

Active Objects库抛出了一个SQL异常:   数据库: - 名称:HSQL数据库引擎 - 版本:1.8.0 - 次要   版本:8 - 主要版本:1驱动程序: - 名称:HSQL数据库引擎驱动程序    - version:1.8.0 java.sql.SQLException:意外的令牌:语句中的END [SELECT * FROM PUBLIC.AO_0371A8_IP WHERE user =?并开始&gt; =?   AND结束&lt; =?]

创建实体的东西如下:

 IP pi = ao.executeInTransaction(new TransactionCallback() // (1)            
    {   
         @Override
         public IP doInTransaction()
         {
            logger.info("before ao.create");
            IP pi = ao.create(enclass);
                                ....

            pi.save();                              
            return pi;          
         }
    });

我的实体如下所示:

@Table("IP")
@Preload
    public interface IP extends Entity {

    @Accessor("issues")
    String getIssues();

@Mutator("issues")
void setIssues(String issues);

@Accessor("planStartTime")
Date getPlanStartTime();

@Mutator("planStartTime")
void setPlanStartTime(Date planStartTime);

@Accessor("planEndTime")
Date getPlanEndTime();

@Mutator("planEndTime")
void setPlanEndTime(Date planEndTime);

@Accessor("user")
String getUser();

@Mutator("user")
void setUser(String user);
}

任何想法?

1 个答案:

答案 0 :(得分:0)

  

意外的标记:语句中的END

看看你的情况:

"user=? AND start>=? AND end<=?"

END实际上是一个SQL关键字(在IFBEGIN之后)。将其更改为,例如:

"user=? AND sessionStartTime>=? AND sessionFinishTime<=?"

这里的问题是,当生成最终的SQL查询时,它的语法无效。这就是你获得例外的原因。