datasource.groovy
dataSource {
pooled = true
}
hibernate {
cache.use_second_level_cache = true
cache.use_query_cache = true
cache.provider_class = 'net.sf.ehcache.hibernate.EhCacheProvider'
}
// environment specific settings
environments {
development {
dataSource {
driverClassName = "org.hsqldb.jdbcDriver"
username = "sa"
password = ""
dbCreate = "create-drop" // one of 'create', 'create-drop','update', or can be left out
/* create-drop - Drop and re-create the database when Grails is run
* create - Create the database if it doesn't exist, but don't modify it if it does. DELETES existing data.
* update - Create the database if it doesn't exist, and modify it if it does exist
*/
url = "jdbc:hsqldb:file:devDB;shutdown=true"
//loggingSql = true
}
}
test {
dataSource {
driverClassName = "oracle.jdbc.driver.OracleDriver"
username = "APP_USER"
password = "APP_PASSWORD"
//dbCreate = "update" LEAVE COMMENTED OUT - NOT NEEDED
url = "jdbc:oracle:thin:@servername:1521:schema"
dialect="org.hibernate.dialect.Oracle10gDialect"
//loggingSql = true
}
hibernate {
default_schema="schema"
}
}
production {
// same as test
}
}
Set up a sequence Grails can use and tell this Grails domain object which tablename and sequence to use.
DomainObject.groovy
static mapping = {
table 'APP_TABLENAME'
id generator:'sequence',params:[sequence:'APP_SEQ']
}
Here is the SQL used to create the table.
CREATE TABLE schema.APP_TABLENAME
(
ID NUMBER(10,0) NOT NULL,
FIELD1 VARCHAR2(100 CHAR) NOT NULL,
// MORE COLUMNS
LAST_UPDATED TIMESTAMP DEFAULT SYSDATE NOT NULL,
LAST_UPDATE_IP VARCHAR2(15 CHAR),
LAST_UPDATE_USER VARCHAR2(10 CHAR) DEFAULT 'import' NOT NULL,
DATE_CREATED TIMESTAMP DEFAULT SYSDATE NOT NULL,
DATE_CREATED_USER VARCHAR2(10 CHAR) DEFAULT 'import' NOT NULL ,
VERSION NUMBER(19,0)
)
TABLESPACE APP_DATA
;
ALTER TABLE schema.APP_TABLENAME ADD
CONSTRAINT APP_TABLENAME_PK PRIMARY KEY (ID)
;
CREATE SEQUENCE schema.APP_SEQ;
CREATE OR REPLACE TRIGGER schema.APP_TABLENAME_TRG
BEFORE INSERT ON schema.APP_TABLENAME
FOR EACH ROW
WHEN (new.id IS NULL)
BEGIN
SELECT APP_SEQ.NEXTVAL INTO :new.id FROM dual;
END;
No comments:
Post a Comment