oracle - 将Oracle和H2用于同一应用程序时Grails中的ID生成问题

标签 oracle grails gorm h2 sequences

我正在研究grails应用程序。我必须使用H2进行开发,而必须使用Oracle进行测试和生产。使用Oracle时,我必须为每个域类/表使用单独的序列,因此我在域类中使用了以下内容:

    static mapping = {
       id (generator:'sequence', params:[sequence:'SOME_SEQUENCE'])
    }

但后来我无法使用H2。尝试使用用户界面创建新索引时,出现唯一索引或主键冲突错误。

如何使这种映射仅适用于生产和测试环境并为开发保留默认设置?我使用Grails 1.3.7。

最佳答案

对于以下情况,您可以将逻辑嵌入mapping块中:

import grails.util.Environment

class MyDomainClass {
   ...
   static mapping = {
      if (!Environment.isDevelopmentMode()) {
         id (generator:'sequence', params:[sequence:'SOME_SEQUENCE'])
      }
   }
}

关于oracle - 将Oracle和H2用于同一应用程序时Grails中的ID生成问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6579120/

相关文章:

configuration - 外部化 Grails 数据源配置

grails - 带有case子句的下拉列表

grails - 在hasMany关系中删除我的域的对象

hibernate - 优化:渴望获取基域类实例

sql - WITH子句和子查询的区别?

linux - 否则如何在 bash 中执行 sqlplus?

Grails 3.2 JSON View 中的 Java 8 LocalDate

grails - 如何使用String外键映射joinTable

java - 查询在 SQL*Plus 中有效,但在 JDBC 中失败并出现 ORA-00911 异常

oracle - column_name 和 qualified_col_name 有什么区别?