1
我在寫一個自定義的Jql函數來執行一個高級查詢,而這個查詢對於普通的Jql是不可能的。我需要找到所有問題與多個組件或(正好一個組件和一個給定的自定義字段不爲空)。如何在Jira插件中進行數據庫查詢?
我可以在我的插件中注入哪些Manager類,以便我可以發出SQL,Hibernate或其他類型的數據庫查詢?
目標是讓我的自定義函數返回匹配問題的列表,以便它可以在Jira的Jql搜索中使用。
我在寫一個自定義的Jql函數來執行一個高級查詢,而這個查詢對於普通的Jql是不可能的。我需要找到所有問題與多個組件或(正好一個組件和一個給定的自定義字段不爲空)。如何在Jira插件中進行數據庫查詢?
我可以在我的插件中注入哪些Manager類,以便我可以發出SQL,Hibernate或其他類型的數據庫查詢?
目標是讓我的自定義函數返回匹配問題的列表,以便它可以在Jira的Jql搜索中使用。
嘗試檢查出來的JIRA API參考: http://docs.atlassian.com/jira/4.1/com/atlassian/jira/jql/builder/JqlClauseBuilder.html 和 http://docs.atlassian.com/jira/4.1/com/atlassian/jira/jql/builder/ConditionBuilder.html
你總是可以創造你的插件類的方法,它看起來像這樣:
public class MyPlugin
{
JiraAuthenticationContext authenticationContext;
SearchProvider searchProvider;
public MyPlugin(JiraAuthenticationContext authenticationContext, SearchProvider searchProvider){
this.authenticationContext = authenticationContext;
this.searchProvider = searchProvider;
}
public List<Issue> getIssues(CustomField your_cf) throws SearchException{
User user = authenticationContext.getLoggedInUser();
JqlClauseBuilder jqb = JqlQueryBuilder.newBuilder().where();
jqb = jqb.not().componentIsEmpty();
Query query = jqb.endWhere().buildQuery();
List<Issue> issues = searchProvider.search(query, user, PagerFilter.getUnlimitedFilter()).getIssues();
List<Issue> result = new ArrayList<Issue>();
for(Issue issue : issues){
Collection<GenericValue> components = issue.getComponents();
//component size already > 0 from query
if(components.size() > 1 || (issue.getCustomFieldValue(your_cf) != null))
result.add(issue);
}
return result;
}
}
沒有,我相信我的查詢這更復雜,並且不能用JQL表達(雖然我可能是錯的)。我在我的問題中添加了括號,以澄清問題所在。 如果可以使用Jql API表示,那麼我只需要在Jira中將其寫入JQL。相反,我想我可以編寫一個自定義函數插件來執行一些自定義SQL,但是我無法從插件訪問數據庫層。 – Tobia 2012-08-10 13:48:58
問題是Jql允許表達「沒有組件」或「至少有一個組件」,但不是「完全是一個組件」,也不是「多於一個組件」,除非我錯了。 – Tobia 2012-08-10 13:53:23
對不起,我的錯。我誤解了你的情況。因爲你我沒有找到JQL條件,所以我在插件類中找到了問題。 – 2012-08-16 11:44:52