Oracle에서 SQL Server로 JBoss5.1.0GA에 포함 된 버전에 대해 확신 할 수없는 Hibernate에서 일부 프로젝트를 마이그레이션하려고합니다.IN 술어에서 SQL Server + 최대 절전 모드 복합 키가 실패합니다.
...
FROM k join k.defs kd
...
WHERE ...
kd not in (SELECT d.defs FROM d ...)
는 MSSQL에서이 쿼리로 실행 (실패) :
....
WHERE
(
(kd.ITEM_ID, kd.DEF_ID) not in (
SELECT
defs.ITEM_ID, defs.DEF_ID
내 kd
법인이 개 필드 ITEM_ID 및 DEF_ID의 화합물 키가 같은 HQL에 쿼리의
하나가 보인다 . Oracle은 compound IN
술어를 지원하지 않으므로 SQL Server가 실패합니다.
분명히 그것은 Hibernate에 의해 생성 된 매핑의 버그입니다. 내 질문은 : 참여 샘플의 필드별로 비교를 제공하기 위해 최대 절전 모드를 구성/패치하는 방법은 무엇입니까?
내 질문에 관심을 가져 주셔서 감사합니다. 'NOT EXISTS'는'NOT IN' 술어를 대체하는보다 우아한 방법입니다. 코드는 유산이고 변경은 부작용을 일으킬 수 있기 때문에 마지막 해결책으로 남겨 둘 것입니다. 그래서 절전 모드로 조작하는 것에 대해 질문하십시오 - 패치를하려면 (상위 버전이거나 특정 클래스를 변경하십시오). – Dewfy