Возникла проблема с запросом ошибки: "База данных HSQL: неожиданный токен: END in Statement"

Я создал запрос активного объекта, как показано ниже:

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

но это дает мне ошибку ниже:

Библиотека активных объектов вызвала исключение SQL: База данных: - имя:HSQL Database Engine - версия:1.8.0 - дополнительная версия:8 - основная версия: 1 Драйвер: - имя:HSQL Database Engine Driver - версия: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);
}

любая идея?

1 ответ

Неожиданный токен: END в заявлении

Посмотрите на ваши условия:

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

END на самом деле ключевое слово SQL (после строки IF а также BEGIN). Измените это, например:

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

Проблема здесь в том, что когда генерируется окончательный запрос SQL, он имеет неверный синтаксис. Вот почему вы получаете исключение.

Другие вопросы по тегам