以自己开发机子为例,只装有一个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币.....