我创建了一个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);
}
任何想法?
答案 0 :(得分:0)
意外的标记:语句中的END
看看你的情况:
"user=? AND start>=? AND end<=?"
END
实际上是一个SQL关键字(在IF
和BEGIN
之后)。将其更改为,例如:
"user=? AND sessionStartTime>=? AND sessionFinishTime<=?"
这里的问题是,当生成最终的SQL查询时,它的语法无效。这就是你获得例外的原因。