답변:
Oracle 10g 방언을 사용하십시오. 또한 최신 JDBC 드라이버에는 Hibernate 3.3.2+가 필요합니다 (내부 클래스 구조가 변경됨-증상이 추상 클래스에 대해 징징 거리게됩니다).
Oracle 11g의 방언은 Oracle 10g ( org.hibernate.dialect.Oracle10gDialect ) 와 동일 합니다. 출처 : http://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/session-configuration.html#configuration-optional-dialects
지원되는 데이터베이스 에 따르면 Oracle 11g는 공식적으로 지원되지 않습니다. .NET을 사용하는 데 문제가 없어야한다고 생각합니다 org.hibernate.dialect.OracleDialect
.
org.hibernate.dialect.OracleDialect
되지 않습니다 ( docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/... ). Oracle 10g 언어를 사용해야합니다.
모드를 org.hibernate.dialect.Oracledialect
사용 하는 (더 이상 사용되지 않는) 언어 및 Oracle 11g 데이터베이스에 문제가 발생했습니다 hibernate.hbm2ddl.auto = validate
.
이 방언으로 Hibernate는 시퀀스를 찾을 수 없었습니다 ( getQuerySequencesString()
메소드 의 구현 때문에 다음 쿼리를 반환합니다.
"select sequence_name from user_sequences;"
실행이 데이터베이스에서 빈 결과를 반환하는 경우).
방언 org.hibernate.dialect.Oracle9iDialect
이상을 사용하면 getQuerySequencesString()
메서드 구현이 다르기 때문에 문제가 해결됩니다 .
"select sequence_name from all_sequences union select synonym_name from all_synonyms us, all_sequences asq where asq.sequence_name = us.table_name and asq.sequence_owner = us.table_owner;"
대신 실행되면 모든 시퀀스를 반환합니다.
적어도 EclipseLink 10g와 11g의 경우가 다릅니다. 11g 이후 페이지 매김 쿼리에 first_rows 힌트를 사용하지 않는 것이 좋습니다.
"특정 쿼리별로 jpa 힌트를 비활성화 할 수 있습니까?"를 참조하십시오 . 이러한 쿼리는 11g에서 사용해서는 안됩니다.
SELECT * FROM (
SELECT /*+ FIRST_ROWS */ a.*, ROWNUM rnum FROM (
SELECT * FROM TABLES INCLUDING JOINS, ORDERING, etc.) a
WHERE ROWNUM <= 10 )
WHERE rnum > 0;
그러나 다른 뉘앙스가있을 수 있습니다.
org.hibernate.dialect.OracleDialect 만 사용하십시오. 10g, 9 등을 제거하십시오.