springboot 配置hibernate 开始使用的是mysql,都正常,但是换成Oracle后总是创建表。

springboot 配置hibernate 开始使用的是mysql,都正常,但是换成Oracle后总是创建表。所以后台报如下表重复错误。这是为什么呀?应该是如果发现表已经有的话不应该再创建才对,请帮我看下哪里配置错了。

再详细说明下我的场景:
数据库映射的对象Product。 第一次系统启动肯定会创建一个,因为数据库中是没有这个表,然后系统重启或者再次启动,正常来讲,Product对象没有改过,数据库表也存在,hibernate不应该再创建,但是目前就是再创建,所以报表名已经有的错误。

Caused by: java.sql.SQLSyntaxErrorException: ORA-00955: 名称已由现有对象使用

    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:447) ~[ojdbc-6.6.0.jar:11.2.0.4.0]
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396) ~[ojdbc-6.6.0.jar:11.2.0.4.0]
    at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:951) ~[ojdbc-6.6.0.jar:11.2.0.4.0]
server:
  port: 8001

spring:
  application:
    name: DEMO_TEST #f服务名称定义
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource            # 当前数据源操作类型
    #driver-class-name: com.mysql.cj.jdbc.Driver             # mysql驱动包
    driver-class-name: oracle.jdbc.driver.OracleDriver
    #url: jdbc:mysql://127.0.0.1:3306/rd_plm?serverTimezone=GMT%2B8  # 数据库名称
    url: jdbc:oracle:thin:@127.0.0.1:1521/DD
    username: root
    password: root
    dbcp2:
      min-idle: 5                                # 数据库连接池的最小维持连接数
      initial-size: 5                           # 初始化连接数
      max-total: 5                              # 最大连接数
      max-wait-millis: 150                     # 等待连接获取的最大超时时间
  jpa:
    hibernate:
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
      ddl-auto: update
    show-sql: true
    properties:
      hibernate:
        #dialect: org.hibernate.dialect.MariaDBDialect
        dialect: org.hibernate.dialect.OracleDialect
        current_session_context_class: org.springframework.orm.hibernate5.SpringSessionContext
    #database: MYSQL
    database: oracle
    open-in-view: true

ddl-auto:
可选参数
create 启动时删数据库中的表,然后创建,退出时不删除数据表
create-drop 启动时删数据库中的表,然后创建,退出时删除数据表 如果表不存在报错
update 如果启动时表格式不一致则更新表,原有数据保留
validate 项目启动表结构进行校验 如果不一致则报错

不要这个配置就可以不校验

楼主解决没,我也遇到了同样的情况

oracle表名使用大写,如果在实体注解table中使用小写,则hibernate在初始化的时候找不到这个小写名称的表,则会尝试建表,就会报错