복붙노트

[SPRING] hibernateTemplate.save ()에 대해 쿼리 실행을 선택하십시오.

SPRING

hibernateTemplate.save ()에 대해 쿼리 실행을 선택하십시오.

스프링과 함께 최대 절전 모드 3.5.0 final을 사용하고 있습니다. 이에 서 3 개의 다른 테이블과 관련된 복합 키가있는 테이블에 데이터를 저장하려고합니다 .hibernateTemplate.save ()를 사용했습니다. 모든 인서트 전에 선택이 발생한다는 것을 알 수 있습니다. 이유를 여전히 확인할 수 없습니다.

도와주세요!

매핑 :

<hibernate-mapping>
    <class name="class1" table="EVENT_ASSET_DISPOSITION">
        <composite-id name="id" class="Idclass">
            <key-property name="pk1" type="java.math.BigInteger">
                <column name="PK_1" precision="38" scale="0"  not-null="true"/>
            </key-property>
            <key-property name="pk2" type="long">
                <column name="PK_2" not-null="true" />
            </key-property>
            <key-property name="pk3" type="long">
                <column name="PK_3" precision="38" scale="0" not-null="true"/>
            </key-property>
        </composite-id>
        <property name="column1" type="java.math.BigDecimal" generated="insert">
            <column name="COLUMN_1" precision="38" scale="0" />
        </property> 
</hibernate-mapping>

SQL :-

[STDOUT] (풀 -14 스레드 -1)을 TABLE_1 (COLUMN_1, PK_1, PK_2, PK_3) 값 (?,?,?,?,)에 삽입하십시오. 2011-02-14 08 : 28 : 30,312 정보 [STDOUT] (풀 -14 스레드 -1) 최대 절전 모드 : TABLE_1을 table1_로 table_1에서 COLUMN1_280_로 table1_.COLUMN_1을 선택하십시오. table1_.PK_1 =? 그리고 table1_.PK_2 =? 그리고 table1_.PK_3 =?

건배, 드 와락

해결법

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

    1.최대 절전 모드에서 개체가 일시적인지 아닌지를 결정하는 데 사용하는 메커니즘

    최대 절전 모드에서 개체가 일시적인지 아닌지를 결정하는 데 사용하는 메커니즘

    매핑 / 객체에 버전 열을 추가하면 문제가 해결됩니다.

    <version name="version" column="version" type="integer" unsaved-value="undefined"/> 
    

    편집 1 :

    http://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html#mapping-declaration-version

    @ 5.1.9 절 참조

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

    2.삽입 후 select가 발행되었음을 로그에 표시합니다. column1이 generated = "insert"로 선언 되었기 때문에 Hibernate는 삽입 후에 해당 컬럼의 생성 된 값을 페치해야합니다.

    삽입 후 select가 발행되었음을 로그에 표시합니다. column1이 generated = "insert"로 선언 되었기 때문에 Hibernate는 삽입 후에 해당 컬럼의 생성 된 값을 페치해야합니다.

    참조 :

  3. from https://stackoverflow.com/questions/4992161/select-query-run-for-hibernatetemplate-save by cc-by-sa and MIT license