GTZN-S 2020-04-04 19:28 采纳率: 100%
浏览 265
已采纳

hibernate中使用oracle,sequence自增序列在同一实例不同用户中无法自动创建相同名称的序列

以自己开发机子为例,只装有一个oracle数据库
然后现在有两个项目,他们分别使用oracle用户名为A和B的数据库,使用hibernate自动建表和自己建序列。
它们的拥有相同的表名和序列名sequence_name,奇怪的是两个项目的表可以自动创建,但是序列却无法创建,
第一个项目中(A用户)中有一个实体为TSysCd:

@Entity
@Table(name = "t_sys_cd")
@Data
public class TSysCd  implements Serializable {
    private static final long serialVersionUID = 7173164012956042131L;
    @Id
    @GeneratedValue(generator = "sequence")
    @GenericGenerator(name = "sequence", strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
        parameters = {
                @Parameter(name = "sequence_name", value = "t_sys_cd_seq"),
                @Parameter(name = "initial_value", value = "1"),
                @Parameter(name = "increment_size", value = "1")
        }
    )
    private Long cdid;// 表id
    private String mc;// 菜单名称
}

B项目中也有一个实体为TSysCd:

@Entity
@Table(name = "t_sys_cd")
@Data
public class TSysCd  implements Serializable {
    private static final long serialVersionUID = 7173164012956042131L;
    @Id
    @GeneratedValue(generator = "sequence")
    @GenericGenerator(name = "sequence", strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
        parameters = {
                @Parameter(name = "sequence_name", value = "t_sys_cd_seq"),
                @Parameter(name = "initial_value", value = "1"),
                @Parameter(name = "increment_size", value = "1")
        }
    )
    private Long cdid;// 表id
    private String mc;// 菜单名称
}

它们的序列名sequence_name 都是一样的,奇怪的是两个项目的表可以自动创建,但是序列却无法创建,有大神帮帮忙看一下不?挺急的,谢谢!!

翻阅了一下午的hibernate源码,发现hibernate会查找oracle下的所有序列逐一对比,这样的话第一个项目创建了一个名为t_sys_cd_seq的序列,然后第一个项目就无法创建了,表就正常两个都可以创建。
注:手动写语句创建序列是没问题的。
相关配置如下:

hibernate:
  current_session_context_class: org.springframework.orm.hibernate5.SpringSessionContext
  dialect: org.hibernate.dialect.Oracle10gDialect
  format_sql: false
  hbm2ddl:
    auto: update
  show_sql: true
  default_schema: xxx
  default_catalog: xxx

各位大哥,不好意思,账户上没有C币.....

  • 写回答

1条回答 默认 最新

  • 关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月29日

悬赏问题

  • ¥15 关于#Mybatis#的问题:怎么办重复数据如下"KSDM":37,"KSMC":"呼吸内科门诊","ksdm":37,"ksmc":"呼吸内科门诊"xml文件填写
  • ¥40 servlet的web程序部署出错
  • ¥50 activiti 新建流程系列问题
  • ¥50 为什么我版本升级之后运行速度变慢5倍??
  • ¥15 如何在gazebo中加载机械臂和机械手
  • ¥15 纯运放实现隔离采样方案设计
  • ¥20 easyconnect无法连接后缀带.com的网站,一直显示找不到服务器ip地址,但是带有数字的网站又是可以连接上的,如何解决
  • ¥15 电脑开机过商标后就直接这样,求解各位
  • ¥15 mysql , 用自己创建的本地主机和用户名 登录不上
  • ¥15 关于#web项目#的问题,请各位专家解答!