[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.이 질문은 오래하지만 여전히 다른 사람을 도움이 될 수 있습니다. 이제 최대 절전 모드로 맵을 반환하는 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.나는 당신이 얻을 수있는 가장 가까운이 쿼리를 사용하는 것입니다 생각 :
나는 당신이 얻을 수있는 가장 가까운이 쿼리를 사용하는 것입니다 생각 :
select id, name from Account
당신이 개 길이 배열의 결과 세트를 제공 which'll. 당신과 같이 수동으로지도를 구축해야합니다 :
for(Object[] row : rs) { map.put(row[0], row[1]); }
이것은 크게 두 번째 레벨 캐시를 무시하고 SQL 쿼리로 번역 얻을합니다.
-
==============================
3.최대 절전 모드의 기본 엔티티 모드는 EntityMode.POJO입니다.
최대 절전 모드의 기본 엔티티 모드는 EntityMode.POJO입니다.
당신은지도 형식으로 쿼리 출력을 검색하기위한 EntityMode.MAP 엔티티 모드를 사용할 수 있습니다.
-
==============================
4.계정을로드 할 것이다 비 lazy 연관이없는 그 순간을 가정하면, 다음은 당신이 심하고,받을거야 최고입니다 :
계정을로드 할 것이다 비 lazy 연관이없는 그 순간을 가정하면, 다음은 당신이 심하고,받을거야 최고입니다 :
List<Account> accounts = (List) session.createQuery("from Account").list(); for (Account account : accounts) map.put(account.getID(), account.getName());
이는 "시간이 많이 걸리는"를 할 수 있지만, 어떻게 든 마술지도에 각 반환 행을두고하는 단계를 피할 수 있습니다 최대 절전 모드처럼 아니다.
다른 대답과는 달리,이 두 번째 레벨 캐시의 혜택을해야합니다.
-
==============================
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.대신 기본 엔티티 이름을 사용하는 당신은 hbm.xml 파일에 개체 이름을 적용 할 수 있습니다.
대신 기본 엔티티 이름을 사용하는 당신은 hbm.xml 파일에 개체 이름을 적용 할 수 있습니다.
예를 들면
이 사용 동면 수단에지도를 반환하는 키 / 값 쌍을 제공한다.
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
'SQL' 카테고리의 다른 글
[SQL] 최고의 성능을 ANDS에 Where 절의 주문 (0) | 2020.07.11 |
---|---|
[SQL] LINQ하려면 SQL에만 시간을 비교 (0) | 2020.07.11 |
[SQL] SQL 왼쪽 필터링 한 후 행을 잃고 가입 (0) | 2020.07.10 |
[SQL] 다람쥐 PostgreSQL의 함수 정의 : 종단되지 않은 달러 인용 된 문자열 (0) | 2020.07.10 |
[SQL] 쉼표 하나의 열 값을 분리 - SQL SERVER를 (0) | 2020.07.10 |