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

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日

悬赏问题

  • ¥60 优博讯DT50高通安卓11系统刷完机自动进去fastboot模式
  • ¥15 minist数字识别
  • ¥15 在安装gym库的pygame时遇到问题,不知道如何解决
  • ¥20 uniapp中的webview 使用的是本地的vue页面,在模拟器上显示无法打开
  • ¥15 网上下载的3DMAX模型,不显示贴图怎么办
  • ¥15 关于#stm32#的问题:寻找一块开发版,作为智能化割草机的控制模块和树莓派主板相连,要求:最低可控制 3 个电机(两个驱动电机,1 个割草电机),其次可以与树莓派主板相连电机照片如下:
  • ¥15 Mac(标签-IDE|关键词-File) idea
  • ¥15 潜在扩散模型的Unet特征提取
  • ¥15 iscsi服务无法访问,如何解决?
  • ¥15 感应式传感器制作的感应式讯响器