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

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条回答 默认 最新

相关推荐 更多相似问题