Phương ngữ ngủ đông cho Cơ sở dữ liệu Oracle 11g?


98

Có phương ngữ Hibernate cho Cơ sở dữ liệu Oracle 11g không? Hay tôi nên sử dụng những org.hibernate.dialect.Oracle10gDialectcái có sẵn với Hibernate?

Câu trả lời:


104

Sử dụng phương ngữ Oracle 10g. Ngoài ra Hibernate 3.3.2+ là cần thiết cho các trình điều khiển JDBC gần đây (cấu trúc lớp bên trong đã thay đổi - các triệu chứng sẽ than vãn về một lớp trừu tượng).

Phương ngữ của Oracle 11g giống với Oracle 10g ( org.hibernate.dialect.Oracle10gDialect ). Nguồn: http://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/session-configuration.html#configuration-optional-dialects


2
Rất tiếc, không giúp được gì cho "ORA-01754: một bảng chỉ có thể chứa một cột thuộc loại LONG".
Jan Goyvaerts

Tôi gặp sự cố với hàm dành riêng cụ thể INTERVAL .. ví dụ: "@Formula (" SYSDATE - INTERVAL '1' HOUR * SHOW_LIMIT_HOURS ")". Tôi không biết nó là có thể tạo ra một số vấn đề, nhưng dường như là một giải pháp tốt: stackoverflow.com/a/26907699/1488761
Eduardo Fabricio

12

Theo cơ sở dữ liệu được hỗ trợ , Oracle 11g không được hỗ trợ chính thức. Mặc dù, tôi tin rằng bạn sẽ không gặp bất kỳ vấn đề gì khi sử dụng org.hibernate.dialect.OracleDialect.


15
Lưu ý rằng org.hibernate.dialect.OracleDialectkhông được dùng nữa ( docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/… ). Bạn nên sử dụng phương ngữ Oracle 10g.
Yonatan

7
Oracle 11 hiện đang được hỗ trợ
MJB

8
Như @MJB đã chỉ ra Oracle 11 được hỗ trợ. Phần thiếu là: nó được hỗ trợ với lớp org.hibernate.dialect.Oracle10gDialect liên kết (áp dụng cho hiernate 4.x quá)
bmichalik

4

Chúng tôi đã gặp sự cố với chế độ org.hibernate.dialect.Oracledialect sử dụng phương ngữ (không được dùng nữa) và cơ sở dữ liệu Oracle 11g hibernate.hbm2ddl.auto = validate.

Với phương ngữ này, Hibernate không thể tìm thấy các trình tự (bởi vì việc triển khai getQuerySequencesString() phương thức, trả về truy vấn này:

"select sequence_name from user_sequences;"

mà việc thực thi trả về một kết quả trống từ cơ sở dữ liệu).

Sử dụng phương ngữ org.hibernate.dialect.Oracle9iDialect , hoặc lớn hơn, giải quyết vấn đề, do một getQuerySequencesString() phương pháp triển khai khác :

"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;"

thay vào đó trả về tất cả các chuỗi nếu được thực thi.


2

Ít nhất trong trường hợp EclipseLink 10g và 11g khác nhau. Vì 11g, không nên sử dụng gợi ý first_rows cho các truy vấn phân trang.

Xem "Có thể tắt gợi ý jpa cho mỗi truy vấn cụ thể không" . Không nên dùng câu truy vấn như vậy trong 11g.

SELECT * FROM (
  SELECT /*+ FIRST_ROWS */ a.*, ROWNUM rnum  FROM (
    SELECT * FROM TABLES INCLUDING JOINS, ORDERING, etc.) a
  WHERE ROWNUM <= 10 )
WHERE rnum > 0;

Nhưng có thể có những sắc thái khác.


0

Nếu bạn đang sử dụng WL 10, hãy sử dụng như sau:

org.hibernate.dialect.Oracle10gDialect


-1

chỉ sử dụng org.hibernate.dialect.OracleDialect Loại bỏ 10g, 9, v.v.


Điều này cũng được gợi ý bởi "darioo", nhưng hãy đọc bình luận cho câu trả lời của anh ấy bởi @Yonatan.
Tom Brunberg
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.