@SequenceGenerator的架构属性在Hibernate中不起作用

时间:2018-07-05 06:58:15

标签: java hibernate jpa orm

有一个oracle用户,其中某些对象在其他用户之间是公用的。 由于这个事实,application.yml如下所示:

jpa:
    hibernate:
        ddl-auto: update
    properties:
      hibernate:
        dialect: org.hibernate.dialect.Oracle10gDialect
        default_schema: common_user
        show_sql: true

必须使用自己的用户的Entity之类的任何对象,都使用@ Table-annotation的schema属性声明,如下所示:

@Entity
@Table(name = "NET_EVL_TEMPLATE", schema = "NET")
@SequenceGenerator(name = "sequence_db", sequenceName = "SEQ_NET_EVL_TEMPLATE", allocationSize = 1)
@Getter
@Setter
public class Evaluation extends BaseEntity<Long> {
...

此方案适用于Table,但不适用于sequence;另一方面,所有用户的所有序列都是在普通用户中生成的。 我将模式放在sequence属性中,如下所示:

@SequenceGenerator(name = "sequence_db", sequenceName = "SEQ_NET_EVL_TEMPLATE_TREE", allocationSize = 1, schema = "NET")

但是它再次不起作用,并且再次在普通用户中生成。

如何解决我的问题?另一方面,任何用户的序列对象都是生成给其自己的用户而不是普通用户的。

2 个答案:

答案 0 :(得分:1)

您可以像这样将架构名称设置为序列名称

@Entity
@Table(name = "NET_EVL_TEMPLATE", schema = "NET")
@SequenceGenerator(name = "sequence_db", sequenceName = "NET.SEQ_NET_EVL_TEMPLATE", allocationSize = 1)
@Getter
@Setter
public class Evaluation extends BaseEntity<Long> {
...

答案 1 :(得分:0)

很可能是个问题。您需要使用此测试用例模板将其复制并打开一个Jira问题:

http://in.relation.to/2018/06/04/best-way-write-hibernate-orm-issue-test-case/