簡體   English   中英

多列的DISTINCT查詢不起作用-Google App引擎數據存儲

[英]DISTINCT query on multiple columns doesn't work - Google App engine Datastore

我想從Google App Engine數據存儲區的endpoint類中獲取不同的多個列。 為此,我正在使用下面的代碼,但是問題是,如果我嘗試僅獲取單列,則只能正常工作並返回DISTINCT數據。 如果我嘗試獲取多個列,則DISTINCT不起作用,它將返回所有記錄,而對Distinct查詢沒有任何影響。 我不知道我的代碼有什么問題。 請提出任何解決方案,並指導我哪里出錯了。 謝謝。

碼:

@SuppressWarnings({ "unchecked" })
    @ApiMethod(name = "getDistinctFollow", httpMethod = HttpMethod.GET, path = "userendpoint/userName_fk3")
    public ObjectListContainer getDistinctFollower(
            @Named("followName") ArrayList<String> lstFollower,
            @Nullable @Named("cursor") String cursorString,
            @Nullable @Named("limit") Integer limit) {

        EntityManager mgr = null;
        Cursor cursor = null;
        List<Object[]> lstNames;
        List<String> lstString;
        ObjectListContainer object;
        try {
            mgr = getEntityManager();
            Query query = mgr.createQuery("select distinct f.uFullName,f.uUrl from UMaster f where f.uName in (:followName)");
            query.setParameter("followName", lstFollower);
            if (cursorString != null && cursorString != "") {
                cursor = Cursor.fromWebSafeString(cursorString);
                query.setHint(JPACursorHelper.CURSOR_HINT, cursor);
            }
            if (limit != null) {
                query.setFirstResult(0);
                query.setMaxResults(limit);
            }
            lstNames = (List<Object[]>) query.getResultList();
            cursor = JPACursorHelper.getCursor(lstNames);
            if (cursor != null)
                cursorString = cursor.toWebSafeString();

            lstString = new ArrayList<String>();

            for (Object obj[] : lstNames) {
                lstString.add(obj != null ? obj[0].toString() : null);
                lstString.add(obj != null ? obj[1].toString() : null);
            }
            object = new ObjectListContainer();
            object.setObjectsList(lstString);

        } finally {
            mgr.close();
        }
        return object;
    }

請注意, DISTINCT僅適用於索引屬性。 如果沒有對uFullNameuName中的任何一個進行索引,則投影將不起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM