So I have this implemented locally. It actually uses the org.hibernate.mapping.RelationModel interface. It allows definition through the mapping file or programmatically via the Configuration. There are two basic usages:
#1: <database-object> <create> <![CDATA[CREATE OR REPLACE TRIGGER t_iu_gen_prop BEFORE INSERT OR UPDATE ON gen_prop FOR EACH ROW BEGIN IF INSERTING THEN :new.lastModified := HEXTORAW( '1' ); ELSE :new.lastModified := HEXTORAW( TO_NUMBER( RAWTOHEX( :old.lastModified ) ) + 1 ); END IF; END;]]> </create> <drop> <![CDATA[DROP TRIGGER t_iu_gen_prop]]> </drop> <!-- again, completely optional --> <dialect-scope name="org.hibernate.dialect.Oracle9Dialect"/> <dialect-scope name="org.hibernate.dialect.OracleDialect"/> </database-object> #2: <database-object> <definition class="MyPLSQLTrigger"/> <!-- again, completely optional --> <dialect-scope name="org.hibernate.dialect.Oracle9Dialect"/> <dialect-scope name="org.hibernate.dialect.OracleDialect"/> </database-object> If anyone wants different name(s), speak now or forever hold your peace... Steve -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Steve Ebersole Sent: Monday, August 08, 2005 8:01 AM To: Hibernate devel Subject: RE: [Hibernate] RE: testing question Actually, probably even better: public interface DatabaseObject { public String sqlCreateString(); public String sqlDropString(); } ;) -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Steve Ebersole Sent: Monday, August 08, 2005 7:54 AM To: Hibernate devel Subject: RE: [Hibernate] RE: testing question Yes, but I was more thinking: public interface DatabaseObject { public String getCreateCommand(); public String getDropCommand(); } because the CREATE/DROP SQL commands explicit operate on a single database object... -----Original Message----- From: Max Andersen Sent: Monday, August 08, 2005 7:49 AM To: Steve Ebersole; Hibernate devel Subject: Re: [Hibernate] RE: testing question And here MyTransactSQLTrigger would be a userprovided class that has String[] createSQL/dropSQL methods ? Sounds good. I was more thinking like: <database-object name="WhateverMostlyForLogging"> <create-ddl> CREATE ... </create-ddl> <create-ddl> CREATE ... </create-ddl> <drop-ddl> DROP .. </drop-ddl> </database-object> but I guess both are usable. /max > If we just let them register something like the DatabaseObject mentioned > (keyed by dialect) I guess I'm fine with that. Maybe something like: > > <database-object class="MyTransactSQLTrigger "> > <!-- optional "dialect scoping" --> > <dialect class="o.h.d.SybaseDialect"/> > <dialect class="o.h.d.SQLServerDialect"/> > </database-object> > > <database-object class="MyPLSQLTrigger"> > <!-- optional "dialect scoping" --> > <dialect class="o.h.d.OracleDialect"/> > <dialect class="o.h.d.Oracle9Dialect"/> > </database-object> > > Due to "export" feature, I guess DatabaseObject would really instead > need to expose the create/drop strings. > > -----Original Message----- > From: Max Andersen > Sent: Monday, August 08, 2005 6:36 AM > To: Steve Ebersole; [EMAIL PROTECTED]; Hibernate devel > Subject: Re: testing question > > >> >> This is the same reason why I always get failures on the tests > relating >> to stored procedure support. >> > > These tests creates the SP's before testing - thus if you get errors > while > running > junit test then that is something that should be failing. > > How about simply extending hibernate with the possibility for user > provided additional DDL's ? > (been suggested before by users, but not had any compelling usecase for > > it...maybe our own > testing is ?) > > /max > >> I think we should come up with a unified way to approach this. So > I'll >> throw out my proposal as a starting point and see if anyone has better >> solutions. >> >> The basic idea is to have the individual tests in this category > register >> "additional db objects" with the base test case class; these would be >> used during setUp() and tearDown() processing. DatabaseObject might >> look like: >> >> interface DatabaseObject { >> void doCreate(Connection conn); >> void doDrop(Connection conn); >> } >> >> I am thinking of a new test base class that tests relying on non-table >> db-object creation could extend; or even add this functionality to the >> existing TestCase. It would add a single new method "DatabaseObject[] >> getAdditionalDatabaseObjects(Dialect dialect)" which it would call >> during setUp() processing. The reason for this instead of just >> overriding setUp()/tearDown() would be to only execute this stuff when >> we actually rebuild the session fatory. >> >> The simple option would be to have each test class do this work >> themselves in setUp() and tearDown() for each test execution even > though >> we are not necessarily creating/dropping the schema at that frequency. >> >> Anyway, thoughts? >> >> Steve >> > > > > > ------------------------------------------------------- > SF.Net email is Sponsored by the Better Software Conference & EXPO > September 19-22, 2005 * San Francisco, CA * Development Lifecycle > Practices > Agile & Plan-Driven Development * Managing Projects & Teams * Testing & > QA > Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf > _______________________________________________ > hibernate-devel mailing list > hibernate-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/hibernate-devel ------------------------------------------------------- SF.Net email is Sponsored by the Better Software Conference & EXPO September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf _______________________________________________ hibernate-devel mailing list hibernate-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/hibernate-devel ------------------------------------------------------- SF.Net email is Sponsored by the Better Software Conference & EXPO September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf _______________________________________________ hibernate-devel mailing list hibernate-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/hibernate-devel ------------------------------------------------------- SF.Net email is Sponsored by the Better Software Conference & EXPO September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf _______________________________________________ hibernate-devel mailing list hibernate-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/hibernate-devel