구성 요소 내의 특정 필드에 대해 낙관적 잠금을 해제하려고합니다. 구성 요소 수준에서 끄면 (구성 요소의 모든 필드에 적용됨) 작동합니다. 그러나 구성 요소가있는 특정 필드가 아닙니다. 내가 최대 절전 모드 3.2.x를 사용하고구성 요소 내의 필드에서 낙관적 잠금 끄기
나 문제에 대한 자세한 내용을 설명하게 나는 클래스 수준 = "더러운"낙관적 잠금을 사용하도록 제한하고
<class name="com.test.core.model.member.Member" abstract="true"
table="MEMBER" optimistic-lock="dirty" dynamic-update="true"
polymorphism="explicit" discriminator-value="LITE">
.....
.....
<component name="helper" class="com.test.core.model.Helper">
<property name="status">
<column name="STATUS" />
<type name="org.hibernate.type.EnumType">
<param name="enumClass">
com.test.core.model.Helper$Status
</param>
</type>
</property>
<property name="changeXML" type="string">
<column name="CHANGE_XML" />
</property>
<property name="lastChange" type="timestamp">
<column name="LAST_CHANGE" />
</property>
</component>
</class>
</hibernate-mapping>
Member.hbm.xml 그래서 "버전"으로 전환 할 수 없습니다. 그러나 구성 요소 내부에서 changeXML 필드에 대한 최대 절전 모드로 낙관적 검사를 사용하지 않으려합니다. 이 구성 요소에서이 설정은 어떤 이유로 존경하지 않습니다에 있기 때문에
그래서 나는<property name="changeXML" type="string" >
to
<property name="changeXML" type="string" optimistic-lock="false">
을 변경했습니다. 결과적으로 hibernate는 changeXML에 대한 업데이트를 커밋하기 전에 내부적으로 확인 쿼리를 생성한다.
즉 업데이트 회원 세트 CHANGE_XML = "NEWVALUE"WHERE ID = 뭔가 CHANGE_XML = OLDVALUE 그러나이 설정을 존중하고 나던 최대 절전 모드로
<component name="helper" class="com.test.core.model.Helper">
to
<component name="helper" class="com.test.core.model.Helper" optimistic-lock="false">
작품에서 변화하는 구성 요소 수준, 즉 로 변화
업데이트 상태 생성
"상태"에 대한 동시 업데이트가 예상되며 staleobjectstateexcep와 함께 실패하지 않으므로 구성 요소 수준에서 변경하는 옵션으로 해결할 수 없습니다. .
구성 요소 내에서 optimistic-lock = "false"설정을 유지하도록 최대 절전 모드를 설정하는 방법이 있습니까?
읽을 시간을내어 주셔서 감사합니다 ..
의견을 보내 주셔서 감사합니다. 최대 절전 모드로 전환 시도 3.6.10. 불운. Hibernate는 단지에있는 "optimistic-lock"을 존중하는 것처럼 보이고, 컴포넌트에서 을 끄고 싶지 않다. –
user3221430
그런 다음 문서에서 그런 식으로 작동해야한다고 말했기 때문에 최대 절전 모드 문제를 제기해야합니다. –
감사합니다. 나는 여기에 https://hibernate.atlassian.net/browse/HHH-9586을 기록했다. – user3221430