上述職位工作的罰款與綁定變量的簡單的PreparedStatement但我有另一個類似的問題。我正在使用Apache Lucerne索引構建器進行更復雜的查詢,即。範圍與索引定義,如:
CREATE CUSTOM INDEX counterparty_column_index ON counterparty (filter_column)
USING 'com.stratio.cassandra.lucene.Index'
WITH OPTIONS = {
'schema' : '{
fields : {
controlling_team : {type : "text", analyzer : "english"},
relationship_manager : {type : "text", analyzer : "english"},
review_date : {type : "date", pattern : "dd-MM-yyyy"}
}
}'
};
和語句定義爲:
log.info("CounterpartyStatement [selectByReviewDateAndTeamStmt]");
selectByReviewDateAndTeamStmt = cassandraDatasource.getSession().prepare(" select id, parent_id, ultimate_parent_id, internal_ref, short_name, long_name, controlling_team, " +
" country_incorp, country_operate, company_reg, relationship_manager, credit_rating, rating_source, pd, lgd, review_date, sector, defaulted, own_bank_entity " +
" from counterparty where filter_column = '{ "
+ " filter : {type:\"range\", field:\"review_date\", lower:\"01-01-2000\", upper:\"%s\"},"
+ " query : {type:\"contains\", field:\"controlling_team\", values:[\"%s\"]},"
+ " refresh:true"
+ " }'");
此格式是必要的,因爲標準的PreparedStatement綁定沒有拿起平常?佔位符。
碼則成了:
log.info("CounterpartyDAO.getRmCounterpartiesForReview [" + rm + "]");
PreparedStatement pStmt = statementFactory.getSelectByReviewDateAndRmStmt();
String query = pStmt.getQueryString();
Date maxDate = dateUtils.addDays(dateUtils.getToday(), 3);
String maxDateString = dateUtils.getAnyDate(maxDate, "dd-MM-yyyy");
query = String.format(query, maxDateString, rm);
ResultSet rs = cassandraDatasource.getSession().execute(query);
也工作得很好,在dateUtils只是一個包,我寫操作日期等
像後添加一個空格,並開始? – Optional