2010-12-06 219 views

回答

10

根据supported databases,Oracle 11g没有正式支持。虽然,我相信你不应该有任何问题使用org.hibernate.dialect.OracleDialect

+14

记住,`org.hibernate.dialect.OracleDialect`被弃用(http://docs.jboss.org/hibernate/核心/ 3.6 /的javadoc /组织/休眠/方言/ OracleDialect.html)。您应该使用Oracle 10g方言。 – Yonatan 2012-01-03 12:57:30

+7

现在支持Oracle 11 – MJB 2012-07-25 03:11:21

+8

正如@MJB指出Oracle 11受支持。缺少的部分是:它支持org.hibernate.dialect.Oracle10gDialect类[链接](http://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/session-configuration.html #configuration-optional-dialects)(也适用于hiernate 4.x) – bmichalik 2013-12-17 12:53:54

3

我们在使用hibernate.hbm2ddl.auto = validate模式时(已弃用的)方言org.hibernate.dialect.Oracledialect和Oracle 11g数据库出现问题。

利用这种方言休眠无法找到的序列(因为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;"

如果被执行则返回所有的序列,来代替。

0

如果您正在使用WL 10使用以下命令:

org.hibernate.dialect.Oracle10gDialect

1

至少在EclipseLink的10g和11g的情况有所不同。自11g以来,不建议使用first_rows提示进行分页查询。

参见"Is it possible to disable jpa hints per particular query"。 这样的查询不应该在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

使用仅 org.hibernate.dialect.OracleDialect 删除10g中,9等