복붙노트

[SQL] 최대 절전 모드 createSQlquery 결과에서 SQL 열 이름을 사용

SQL

최대 절전 모드 createSQlquery 결과에서 SQL 열 이름을 사용

나는 쿼리에 원하는 복합 기본 키와 SQL 뷰의 몇 가지를 가지고 있고, 최대 절전 모드가 복합 키이스와 작업에 통증이 만드는 것이므로, 나는 createSQLQuery을 사용하고 있습니다. 문제는이 방법 만 목록을 반환 할 수 있으며, 나는 그들의 인덱스에 의해 colums를 참조 할 필요가있다.

내가 JDBC처럼 뭔가를 할 자신의 SQL 이름 대신 자신의 인덱스에 의해 열을 참조 할 수있는 모든 기회?

해결법

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

    1.

    Query query=session.createSQLQuery("your query");
    query.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);
    List<Map<String,Object>> aliasToValueMapList=query.list();
    

    당신이 코드에서 알아낼 수 있듯이, 목록은 각 행을 나타내는지도 개체를 포함합니다. 각 Map 객체는 값으로 키와 값으로 열 이름을 갖게됩니다.

    참고 :은 SQLQuery에 대한이 작품, 당신은 당신이 키와 인덱스 값을 얻을 것이다 별칭을 지정하지 않고 HQL 쿼리 AliasToEntityMapResultTransformer를 사용하는 경우.

    당신이 다시 POJO 목록에 aliasToValueMapList 변환하는 경우에, 나는 당신이 당신의 자신을 만드는 데 조언 의 ResultTransformer는 'transformTuple'방법에서 사용자 정의 개체를 반환합니다.

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

    2.귀하의 질문이 모호 - 첫 번째 단락에서 당신은 SQL 이름으로, 인덱스와 두 번째의 열을 참조 할 수 있습니다. 인덱스가 용이하여 이후, 나는 이름으로 가정합니다.

    귀하의 질문이 모호 - 첫 번째 단락에서 당신은 SQL 이름으로, 인덱스와 두 번째의 열을 참조 할 수 있습니다. 인덱스가 용이하여 이후, 나는 이름으로 가정합니다.

    우선, 당신은 기본 JDBC 연결을 액세스하고 순수한 JDBC와 마찬가지로 그것을 처리하기 위해 doWork 방법을 사용할 수 있습니다 :

    session.doWork(new Work() {
      public void execute(Connection connection) throws SQLException {
        connection.prepareStatement(...
      }
    });
    

    또는, 당신은 열 이름의 문자열을 [] 반환 query.getReturnAliases를 사용할 수 있습니다. effciency, 나는 아마 인덱스 별명의지도를 구축 할 것입니다 그리고 당신은 그 결과 같은 [map.get ( "열 이름을")] 할 수 있습니다.

    (주석으로 시도하지 않은) XML 매핑을 사용하지만 정말, Hibernate는 아주 쉽게 복합 키를 처리합니다. 그것은 앞까지 조금 더 많은 작업을이고 복잡한 관계 (외래 키 이름은 / 스팬이 일치하지 않을 때 주로)과 몇 가지 문제가있다,하지만 당신은 ID 클래스를 생성하고지도하면, 당신은 HQL / 기준 및 GET 스틱 수 게으른 로딩, 간단한 조인, 더러운 검사 등의 모든 혜택

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

    3.저도 같은 문제를 가지고하지만 난이 사용 때 해결

    저도 같은 문제를 가지고하지만 난이 사용 때 해결

    Query query=session.createSQLQuery("your query");
    query.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);
    

    나는 헤더 이름으로 결과를 얻을하지만 난 Employee.class에서 Shipmentcolor으로 SQL 쿼리 선택 'DCA5E3'에 새 열을 만들 때 나는 새로운 문제를 가지고 "D":하지만이 경우에는 내가 SHIPMENTCOLOR을 얻었다. 어떻게 SHIPMENTCOLOR의 전체 가치를 얻을 수 있습니다.

  4. from https://stackoverflow.com/questions/2605385/using-sql-column-names-in-hibernate-createsqlquery-result by cc-by-sa and MIT license