Oracle数据库11g是否有Hibernate方言?或者我应该使用Hibernate附带的org.hibernate.dialect.Oracle10gDialect?
org.hibernate.dialect.Oracle10gDialect
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
hc8w905p2#
根据supported databases,Oracle 11g不受官方支持。尽管如此,我相信你使用org.hibernate.dialect.OracleDialect应该不会有任何问题。
org.hibernate.dialect.OracleDialect
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;"个它返回所有执行的序列。
hibernate.hbm2ddl.auto = validate
org.hibernate.dialect.Oracledialect
getQuerySequencesString()
"select sequence_name from user_sequences;"
org.hibernate.dialect.Oracle9iDialect
"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;"
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;
字符串但可能还有其他细微差别。
oxcyiej75#
如果您使用的是WL 10,请使用以下命令:第一个月
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=****
型
6条答案
按热度按时间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
hc8w905p2#
根据supported databases,Oracle 11g不受官方支持。尽管如此,我相信你使用
org.hibernate.dialect.OracleDialect
应该不会有任何问题。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;"
个它返回所有执行的序列。
roejwanj4#
至少在10g和11g的情况下是不同的。从11g开始,不建议使用first_rows提示进行分页查询。
参见"Is it possible to disable jpa hints per particular query"。这样的查询不应该在11g中使用。
字符串
但可能还有其他细微差别。
oxcyiej75#
如果您使用的是WL 10,请使用以下命令:
第一个月
km0tfn4u6#
SpringBoot-3.1.4不需要Dialect和JDBC驱动程序显式配置。它会自动处理。
您可以从application.properties删除以下行
字符串
只有以下属性才足够:
型