gpt4 book ai didi

java - 无法编译 ORMLite 语句

转载 作者:行者123 更新时间:2023-12-02 13:14:10 25 4
gpt4 key购买 nike

我正在尝试编译 ORMLite 查询语句,但收到以下 SQLException:

Could not compile this SELECT_LONG statement since the caller is expecting a SELECT statement.  Check your QueryBuilder methods.

我已经尝试了所有可能的方法,但我总是能成功,我的主要尝试是:

QueryBuilder<Message, Integer> messagesQueryBuilder = dbManager.getMessagesDao().queryBuilder();   
Where<Message, Integer> resultedQuery = messagesQueryBuilder.where().in(Message.SCHOOL_COLUMN_NAME, schoolIntegerQueryBuilder);
Long count = messagesQueryBuilder.countOf();
messagesQueryBuilder.orderBy(Message.MESSAGE_TIMESTAMP, false);
messagesQueryBuilder.queryForFirst(); // getting it here

然后我尝试先准备查询:

messagesQueryBuilder.orderBy(Message.MESSAGE_TIMESTAMP, false);
Message message = dbManager.getMessagesDao().query(messagesQueryBuilder.prepare()).get(0); // getting here also

最后尝试在一个新对象中单独准备它,然后使用该对象:

PreparedQuery<Message> queryForMessage = messagesQueryBuilder.orderBy(Message.MESSAGE_TIMESTAMP, false).prepare();
Message message = dbManager.getMessagesDao().query(queryForMessage).get(0); // also failing here with the same Exception

我不知道我到底做错了什么,但即使我尝试了通常适用于我的所有可能的方法。

最佳答案

终于找到问题出在哪里了,在ORMLite中执行方法时就像执行一条语句,不仅获取值并将其存储在其他地方,所以执行时:

Long count = messagesQueryBuilder.countOf();

现在 messagesQueryBuilder 仅包含检索到的计数,而不包含之前存储在其中的整个查询结果。

因此,为了解决我的问题,我将代码执行行重新排序如下:

QueryBuilder<Message, Integer> messagesQueryBuilder = dbManager.getMessagesDao().queryBuilder();   
Where<Message, Integer> resultedQuery = messagesQueryBuilder.where().in(Message.SCHOOL_COLUMN_NAME, schoolIntegerQueryBuilder);

messagesQueryBuilder.orderBy(Message.MESSAGE_TIMESTAMP, false);
Message message = messagesQueryBuilder.queryForFirst();

Long count = messagesQueryBuilder.countOf();

关于java - 无法编译 ORMLite 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43842099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com