有一个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")
但是它再次不起作用,并且再次在普通用户中生成。
如何解决我的问题?另一方面,任何用户的序列对象都是生成给其自己的用户而不是普通用户的。
答案 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/