Tony, > In our models we never specify the schema
This sounds like what I was experimenting with. (Except in my case I thought it was “hacking” - I feel much better now :) ) I just manually edited the map.xml file and deleted the schema - cayenne-runtime seems fine with using the connection-url to define the db namespace. Did you set this in the CayenneModeler or via manual editing of the config files? Thanks Joe > On Jul 8, 2019, at 9:23 AM, Tony <[email protected]> wrote: > > Joe, > > We use cayenne with both drone and Jenkins. In our models we never specify > the schema. It’s always left unspecified I.e. blank. > > When you do this the schema is determined by the JDBC URL. In our world the > schemas are always the same so technically we could specify them but I > personally feel the flexibility of determining database instance and schema > from the environment is far superior to coding either in the model. > > We set shell variables to the JDBC url and then pick them up form the > environment. > > This works flawlessly for us. > > > > Tony Giaccone > >> On Jul 6, 2019, at 9:36 PM, Joe Baldwin <[email protected]> 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 >>
