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 Excel发现不可读取的内容
  • ¥15 UE5#if WITH_EDITOR导致打包的功能不可用
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?
  • ¥15 电磁场的matlab仿真
  • ¥15 mars2d在vue3中的引入问题
  • ¥50 h5唤醒支付宝并跳转至向小荷包转账界面
  • ¥15 算法题:数的划分,用记忆化DFS做WA求调
  • ¥15 chatglm-6b应用到django项目中,模型加载失败
  • ¥15 CreateBitmapFromWicBitmap内存释放问题。