0

我创建了一个活动对象查询,如下所示:

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

但它给了我以下错误:

活动对象库引发 SQL 异常:数据库:-名称:HSQL 数据库引擎-版本:1.8.0-次要版本:8-主要版本:1 驱动程序:-名称:HSQL 数据库引擎驱动程序-版本:1.8。 0 java.sql.SQLException:意外的令牌:语句中的END [SELECT * FROM PUBLIC.AO_0371A8_IP WHERE user =?并开始>=?和结束<=?]

创建实体的东西如下:

 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);
}

任何想法?

4

1 回答 1

0

意外的令牌:语句中的 END

看看你的条件:

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

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

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

这里的问题是,当最终的 SQL 查询生成时,它的语法无效。这就是为什么你得到例外。

于 2013-05-02T12:31:08.103 回答