John, > https://stackoverflow.com/questions/18948418/set-database-path-in-cayenne
Thanks for the link. I perused Andrus’ post, as well as the embedded link. I am not quite following your suggested strategy though … 1. As best as I can tell, the posting suggests a strategy that addresses the connection-url (not the multiple schema-refs in the cayenne-generated map.xml file) 2. Core Issue: - if I did not define the problem well enough, here is an example ... - (from log-file analysis), cayenne-runtime generates select statements with fully qualified table names - ex: "d1.t1” - it appears to get “d1” from the cayenne-modeler generated map.xml file schema-ref ex: "<db-entity name=“t1" schema=“d1”>” - there are currently about 25-30 references in the cayenne config files - changing the connection-url alone does *not* change the dbname in the runtime-select-statements (per log file) - if I just change the connection-url to another dbname, cayenne still uses the map.xml schema references to qualify the table names - so even if you specify “d0” in your connection url, cayenne will override and generate sql based on the scheme-ref “d1" in the map.xml file - therefore, in order to support multiple instances of my app (each with a separate dbname), I am forced to change all 25-30 schema-refs for every instance I support. 3. My goal: - genericize the 25-30x schema-refs to 1x schema-ref, so that I can deploy to multiple instances (each with its own dbname). - I am hoping for a DBMS-like namespace specifier (like “use dbname”) to change the schema-ref in one location. Comments: 1. my current strategy manual strategy is working - it is just “klunky”, and does not easily support CI/CD. 2. Just trying to find out if the (schema-namespace / single-change) strategy is possible - if not, I will just go with the manual strategy To Simplify: 1. Is there a way to specify the dbname in *one* location (like a single config file, or gradle param)? 2. or could I do something with db-entity tag so that it would ref the defaultSchema? <property name="defaultSchema" value="cmstest"/> so instead of <db-entity name=“t1" schema=“d1”> it might say: <db-entity name=“t1" schema='use-default'> Thanks, Joe > On Jul 6, 2019, at 10:04 PM, John Huss <johnth...@gmail.com> wrote: > > https://stackoverflow.com/questions/18948418/set-database-path-in-cayenne > > On Sat, Jul 6, 2019 at 8:36 PM Joe Baldwin <jfbald...@earthlink.net> wrote: > >> I am trying to genericize the map.xml for multiple instances with multiple >> dbnames (looking for a “use <dbname>” analogue for cayenne config files - >> or a better idea if you have one) >> >> Details ... >> >> Context: >> cayenne: 4.0.1 >> db: mysql 8.0.16 >> dbname: “cms" / “cmstest" / "cms_<bunch of others suffixes>” (all >> referring to the same schema) >> >> Goals: >> - migrate to cicd (gradle, git, jenkins, automated testing,etc) >> - support testing configurations, as well as multiple instances of the >> same app but with unique dbnames >> >> Prob: >> While trying to migrate to fully automated testing (using junit-5) I hit a >> snag: >> - the cayenne map.xml has the datasource name (“cms” in this instance) >> embedded in the map.xml config file: >> >> <property name="defaultSchema" value="cms”/> >> ... >> <db-entity name="admin" schema="cms"> >> … >> </db-entity> >> >> So the general idea I had was to create a tmp-test database (cmstest), run >> the junit tests for unit & complex unit testing configured using gradle, >> then move on to a more complex testing config downstream. When I deploy >> it will be to multiple instances (with unique dbnames). >> >> But I cannot figure out how to genericize this map.xml so that I can >> easily change the datasource name - I could throw sed/awk at it - to change >> all the schema-name-refs, but I was hoping for something a bit more >> cayenne-oriented (and less brittle than sed/awk). >> >> Ideally, I am searching for a cayenne-analogue to mysql “use <dbname>” so >> that I could change the datasource name in one location (vs 25). >> >> Thanks >> Joe >> PS if you have any other gradle tricks that you rely on, please do send a >> link >> >>