programing

네이티브 쿼리 최대 절전 모드 - char(3) 열

linuxpc 2023. 7. 20. 21:46
반응형

네이티브 쿼리 최대 절전 모드 - char(3) 열

Oracle에 SC_CUR_CODE 열이 CHAR(3)인 테이블이 있습니다.

내가 할 때:

    Query q2 = em.createNativeQuery("select sc_cur_code, sc_amount from sector_costs");

    q2.setMaxResults(10);

    List<Object[]> rs2 = q2.getResultList();

    for (Object[] o : rs2) {
        System.out.println(">>> cur=" + o[0]);
    }

그렇군요.cur=E그리고.cur=U대신에cur=EUR그리고.cur=USD

o[0]는 java.dll입니다.성격

어떻게 하면 전체 값을 얻을 수 있습니까?EUR그리고.USD?

최대 절전 모드가 유형 값을 읽는 것 같습니다.CHAR(n)~하듯이Character에 던져 보십시오.VARCHAR(n):

Query q2 = em.createNativeQuery(
    "select cast(sc_cur_code as VARCHAR2(3)), sc_amount from sector_costs");  

다음을 통해 최대 절전 모드를 사용하는 경우Session인터페이스를 사용하여 결과 유형을 명시적으로 설정할 수 있습니다.addScalar()대신 (를 통해 액세스 가능)unwrap()JPA 2.0에서):

Query q2 = em.createNativeQuery(
    "select sc_cur_code, sc_amount from sector_costs");
q2.unwrap(SQLQuery.class).addScalar("sc_cur_code", StringType.INSTANCE);

HH-2220부터 시작하여 Hibernate JIRA에서는 이 문제와 관련하여 해결되지 않은 문제가 많습니다.

다음은 HHH-2220의 논평에서 Max Rydahl Andersen의 설명입니다.

현재 Hibernate는 SQL 유형에서 Hibernate/Java 유형으로 일종의 "자동" 매핑을 지원합니다. 이러한 매핑을 수행할 때 모호성이 많기 때문에 실제로 원하는 것과 일치하지 않을 수 있습니다.

그렇기 때문에 코드 전체에서 Vanguage의 하위 분류를 사용하여 가능한 여러 매핑 중 어떤 매핑을 원하는지 지시하지 않으려면 항상 명시적 addScalar 또는 를 사용하는 것이 좋습니다.

CHAR의 문제가 가장 문제지만 해결하기가 쉽지 않습니다. 특정 길이 대신 범위를 매핑하려면 registerType(유형, 형식, 형식, 형식, 형식 이름)이 필요합니다.그러나 매핑 모호성에 부딪힐 수 있습니다(예: 가끔 배열을 원할 때 다른 시간 문자열 등).따라서 모든 네이티브 SQL 쿼리에는 .addScalar를 사용하는 것이 좋습니다. 자동 검색에 의존하는 것은 항상 위험하므로 최소한으로 사용해야 합니다.

최대 절전 모드 매핑 구성 파일에 설명된 기본 쿼리가 있는 경우 다음을 정의해야 합니다.<return-scalar ...>반환되는 각 값에 대해참고: 반환 형식을 명시적으로 정의하면 자동 검색이 해제되고 선언된 열만 반환되므로 반환되는 모든 값을 열거해야 합니다.

<sql-query name="myQuery">
    <query-param name="days" type="int" />
    <return-scalar column="count" type="int" />
    <return-scalar column="section_name" type="string" />
    <![CDATA[select count(id) as count, section_name from document where days <= :days]]>
</sql-query>

언급URL : https://stackoverflow.com/questions/4873201/hibernate-native-query-char3-column

반응형