工作怎麼說,我可以執行以下查詢只是在SQL服務器SQL Server查詢運行SQLServer的內部罰款,但相同的查詢不JDBI
SELECT notificationMessage FROM NotificationMessages WHERE timesUsed < 2
但罰款時,查詢被稱爲
@SqlQuery("SELECT notificationMessage FROM NotificationMessages WHERE timesUsed < 2")
List<String> getNotificationMessages();
我得到以下錯誤
有一個在一個上下文,其中僅一個非布爾類型的表達有預計'timeUsed'附近的條件
只是谷歌翻譯它的快速通道。另一個有趣的事情是,我的異常消息以丹麥語打印 - >只有sql例外。我曾嘗試在Sql Server中運行SET LANGUAGE English
幫助,但未在Intellij中的jdbi發出異常消息。
編輯1如果有人有同樣的問題,那麼我去解決方案SELECT
所有消息,然後做所有的代碼邏輯。我不喜歡的東西如下:
public interface NotificationDAO {
@SqlQuery("SELECT id, notificationMessage, timesUsed, messageType, messageDays FROM NotificationMessages WHERE messageType = 'REMINDER'")
List<NotificationMessage> getReminderNotificationMessages();
}
public class NotificationResource {
...
private NotificationMessage pickNotificationMessage(){
List<NotificationMessage> notificationMessages = notificationDAO.getReminderNotificationMessages();
// Extract the number of times a message has been sent out to users, store in Integer list.
List<Integer> timesUsedList = notificationMessages.stream().map(nm -> nm.getTimesUsed()).collect(Collectors.toList());
// Remove all those messages which have been used once more than others. //TODO maybe another type of removal of messages
List<NotificationMessage> notificationMessagesTruncated = notificationMessages.stream().filter(nm -> nm.getTimesUsed() <= Collections.max(timesUsedList)-1).collect(Collectors.toList());
...
}
...
}
EDIT 2 @zloster我不會說這是你所鏈接的帖子完全相同的副本。因爲他們的問題是將一個列表綁定到查詢上,所以我對我的解決方案工作得很好。我的問題是,我無法弄清楚爲什麼我不能在我的查詢上做出比操作簡單的操作,例如WHERE 1 < 2.我沒有意識到<是StringTemplate的保留字符。但是,你給的鏈接有我的問題的解決方案「......括號<這樣\ < ...」,但我不同意說它自己的問題是重複的。
所以他們的問題是「你如何將列表綁定到SQL查詢語句?」
凡爲我的問題是
「爲什麼比較運算符不JDBI SQL工作」,並且是當然的,因爲我用的是註釋@UseStringTemplate3StatementLocator
使我的列表映射到IN
語句。我有工作,他們沒有。但是我無法讓自己的行動低於或高於任何形式的行動。
可能重複[Jdbi - 如何綁定Java中的列表參數?](http://stackoverflow.com/questions/32526233/jdbi-how-to-bind-a-list-parameter-in-java) – zloster
@zloster我不會說這是你正在鏈接的帖子的確切副本。因爲他們的問題是將一個列表綁定到查詢上,所以我對我的解決方案工作得很好。我的問題是,我無法弄清楚爲什麼我無法對我的查詢做一個簡單的'低於'操作,例如'WHERE 1 <2'。我沒有意識到'<'是StringTemplate的保留字符。但是,你給的鏈接有我的問題的解決方案'「......括號<像這樣\\ <...」',但我不同意說它自己的問題是重複的。 – TheLearner