0
我需要在我的查詢生成器的having子句中使用佔位符。 我試過用「?」馬克後來我得到: java.sql.SQLException: argument holder index 1 not valid, only 1 in statement
在ormlite中使用SelectArg having子句?
這是我試圖完成的事情:
QueryBuilder<ArchiefTag, Integer> archiefTagQb = helper
.getArchiefTagDao().queryBuilder();
tagSelectArg = new SelectArg();
archiefTagQb.where().in(ArchiefTag.TAG_FIELD, tagSelectArg);
archiefTagQb.groupBy(ArchiefTag.ARCHIEF_ENTRY_FIELD);
QueryBuilder<ArchiefEntry, Date> archiefEntryQb = helper
.getArchiefEntryDao().queryBuilder();
archiefEntryQb.join(archiefTagQb);
//the having must be on the outer join query. Don't know why
archiefEntryQb.having(String.format("COUNT(%s) = ?",ArchiefTag.TAG_FIELD));
preparedGetArchiefForTags = archiefEntryQb.prepare();
生成的SQL是:
SELECT `ARCHIEF_ENTRY`.*
FROM `ARCHIEF_ENTRY`
INNER JOIN `ARCHIEF_TAG` ON `ARCHIEF_ENTRY`.`id_entry` = `ARCHIEF_TAG`.`entry`
GROUP BY `ARCHIEF_TAG`.`entry`
HAVING COUNT(tag) = ?
但是,當我打電話: preparedGetArchiefForTags.setArgumentHolderValue(1, 3);
以上發生異常。
任何想法如何解決這個問題?
仍然得到異常'值java.sql.SQLException:論點持有人指數0無效,在statement' – Vrolijkx
只有0您曾經有過在聲明1,所以我覺得你的查詢必須有哪些變化? @Vrolijkx – Gray
nope聲明沒有改變,但我現在看到,我忘記了生成的sql中的一塊。但我使用executeRaw()解決了這個問題 – Vrolijkx