복붙노트

[SQL] 최대 절전 모드로, 어떻게 테이블을 조회 할 수 있습니다 키 값 쌍 ID> 이름의 해시 맵을 반환?

SQL

최대 절전 모드로, 어떻게 테이블을 조회 할 수 있습니다 키 값 쌍 ID> 이름의 해시 맵을 반환?

나는이 표를 가지고 :

table name : Account
Fields : id (varchar), name(varchar), other fields...

나는 (두 번째 캐시 레벨을 사용하는) 최대 절전 모드 메커니즘이 테이블을 조회 할. 최대 절전 모드 쿼리의 결과는 키 필드 ID와 어디 값은 필드 이름입니다 해시지도해야합니다.

어떻게 HQL로 쓸 수?

나는지도를 사용하는 경우, 난 단지 별칭을 사용할 수 있습니다 내가 객체와 생성자를 사용하는 경우, 나는 시간이 소요됩니다 해시 맵에 결과를 변환해야합니다.

Example : 
Id | name | other fields
1 Jerome ...
2 Steve ...
3 Nick ...

쿼리의 결과는 해시 맵해야합니다 :

1>Jerome
2>Steve
3>Nick

감사

해결법

  1. ==============================

    1.이 질문은 오래하지만 여전히 다른 사람을 도움이 될 수 있습니다. 이제 최대 절전 모드로 맵을 반환하는 HQL을 사용할 수 있습니다. 이런 식으로 뭔가를 사용 :

    이 질문은 오래하지만 여전히 다른 사람을 도움이 될 수 있습니다. 이제 최대 절전 모드로 맵을 반환하는 HQL을 사용할 수 있습니다. 이런 식으로 뭔가를 사용 :

    select new map( max(bodyWeight) as max, min(bodyWeight) as min, count(*) as n ) from Cat cat
    

    최대 절전 모드 문서에서 : http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html#queryhql-select

  2. ==============================

    2.나는 당신이 얻을 수있는 가장 가까운이 쿼리를 사용하는 것입니다 생각 :

    나는 당신이 얻을 수있는 가장 가까운이 쿼리를 사용하는 것입니다 생각 :

    select id, name from Account
    

    당신이 개 길이 배열의 결과 세트를 제공 which'll. 당신과 같이 수동으로지도를 구축해야합니다 :

    for(Object[] row : rs) {
        map.put(row[0], row[1]);
    }
    

    이것은 크게 두 번째 레벨 캐시를 무시하고 SQL 쿼리로 번역 얻을합니다.

  3. ==============================

    3.최대 절전 모드의 기본 엔티티 모드는 EntityMode.POJO입니다.

    최대 절전 모드의 기본 엔티티 모드는 EntityMode.POJO입니다.

    당신은지도 형식으로 쿼리 출력을 검색하기위한 EntityMode.MAP 엔티티 모드를 사용할 수 있습니다.

  4. ==============================

    4.계정을로드 할 것이다 비 lazy 연관이없는 그 순간을 가정하면, 다음은 당신이 심하고,받을거야 최고입니다 :

    계정을로드 할 것이다 비 lazy 연관이없는 그 순간을 가정하면, 다음은 당신이 심하고,받을거야 최고입니다 :

    List<Account> accounts = (List) session.createQuery("from Account").list();
    for (Account account : accounts) map.put(account.getID(), account.getName());
    

    이는 "시간이 많이 걸리는"를 할 수 있지만, 어떻게 든 마술지도에 각 반환 행을두고하는 단계를 피할 수 있습니다 최대 절전 모드처럼 아니다.

    다른 대답과는 달리,이 두 번째 레벨 캐시의 혜택을해야합니다.

  5. ==============================

    5.여자...

    여자...

    코드 아래 당신을 도울 수 있습니다.

        Query query = session.createQuery("select id, name from table");
        List results = query.list();
    

    객체가 작업을 수행으로 결과를 표시하려면 :

        int i;
        int j;
        Object object = null;
        for (i = 0; i < results.size(); i++) {
    
            System.out.println("-------");
            Object[] obj = (Object[]) results.get(i);
            for (j=0;j<obj.length;j++)
            {
                System.out.println(obj[j]);
            }
            System.out.println("-------");
    
        }
    

    편집 : 당신은 결과를지도로 객체 및 you'r 할 것을 사용할 수 있습니다.

  6. ==============================

    6.대신 기본 엔티티 이름을 사용하는 당신은 hbm.xml 파일에 개체 이름을 적용 할 수 있습니다.

    대신 기본 엔티티 이름을 사용하는 당신은 hbm.xml 파일에 개체 이름을 적용 할 수 있습니다.

    예를 들면

    이 사용 동면 수단에지도를 반환하는 키 / 값 쌍을 제공한다.

  7. from https://stackoverflow.com/questions/4736743/with-hibernate-how-can-i-query-a-table-and-return-a-hashmap-with-key-value-pair by cc-by-sa and MIT license