适用于Oracle Database 11g的Hibernate方言?


98

Oracle Database 11g是否有Hibernate方言?还是应该使用org.hibernate.dialect.Oracle10gDialectHibernate附带的那个?

Answers:


104

使用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


2
不幸的是对于“ ORA-01754:一个表可能只包含一个LONG类型的列”没有帮助。
Jan Goyvaerts

我对特定的保留功能INTERVAL有问题。例如“ @Formula(“ SYSDATE-INTERVAL'1'HOUR * SHOW_LIMIT_HOURS”)“。我不知道这可能会产生一些问题,但似乎是一个不错的解决方案:stackoverflow.com/a/26907699/1488761
Eduardo Fabricio 2015年

12

根据受支持的数据库,尚未正式支持Oracle 11g。虽然,我相信您使用不会有任何问题org.hibernate.dialect.OracleDialect


15
记住,org.hibernate.dialect.OracleDialect已被弃用(docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/...)。您应该使用Oracle 10g方言。
Yonatan 2012年

7
现在支持Oracle 11
MJB 2012年

8
正如@MJB指出的那样,支持Oracle 11。缺少的部分是:org.hibernate.dialect.Oracle10gDialect类链接受支持(也适用于分层4.x)
bmichalik 2013年

4

方言(不建议使用)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;"

如果执行则返回所有序列。


2

至少在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;

但是可能还有其他细微差别。


0

如果使用的是WL 10,请执行以下操作:

org.hibernate.dialect.Oracle10gDialect


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.