Oracle数据库11g的Hibernate方言?

jvidinwx  于 2023-11-17  发布在  Oracle
关注(0)|答案(6)|浏览(252)

Oracle数据库11g是否有Hibernate方言?或者我应该使用Hibernate附带的org.hibernate.dialect.Oracle10gDialect

0s0u357o

0s0u357o1#

使用Oracle 10 g方言。最近的JDBC驱动程序也需要Hibernate 3.3.2+(内部类结构改变-症状将是抱怨抽象类)。
Oracle 11 g的方言与Oracle 10 g相同(org.hibernate.dialect.Oracle10gDialect)。来源:http://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/session-configuration.html#configuration-optional-dialects

hc8w905p

hc8w905p2#

根据supported databases,Oracle 11g不受官方支持。尽管如此,我相信你使用org.hibernate.dialect.OracleDialect应该不会有任何问题。

l7wslrjt

l7wslrjt3#

我们在使用hibernate.hbm2ddl.auto = validate模式的(已弃用的)方言org.hibernate.dialect.Oracledialect和Oracle 11g数据库中遇到了问题。
使用这种方言,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;"
它返回所有执行的序列。

roejwanj

roejwanj4#

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

字符串
但可能还有其他细微差别。

oxcyiej7

oxcyiej75#

如果您使用的是WL 10,请使用以下命令:
第一个月

km0tfn4u

km0tfn4u6#

SpringBoot-3.1.4不需要Dialect和JDBC驱动程序显式配置。它会自动处理。
您可以从application.properties删除以下行

spring.datasource.driver.class-name=oracle.jdbc.OracleDriver
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect

字符串
只有以下属性才足够:

spring.datasource.url=****
spring.datasource.username=***
spring.datasource.password=****

相关问题