| |
| If a domain class uses more than one `DataSource` then you can use the namespace implied by each `DataSource` name to make GORM calls for a particular `DataSource`. For example, consider this class which uses two `DataSource` instances: |
| |
| [source,groovy] |
| ---- |
| class ZipCode { |
| |
| String code |
| |
| static mapping = { |
| datasources(['lookup', 'auditing']) |
| } |
| } |
| ---- |
| |
| The first `DataSource` specified is the default when not using an explicit namespace, so in this case we default to 'lookup'. But you can call GORM methods on the 'auditing' `DataSource` with the `DataSource` name, for example: |
| |
| [source,groovy] |
| ---- |
| def zipCode = ZipCode.auditing.get(42) |
| ... |
| zipCode.auditing.save() |
| ---- |
| |
| As you can see, you add the `DataSource` to the method call in both the static case and the instance case. |
| |
| You can use `Where` queries: |
| |
| [source,groovy] |
| ---- |
| def results = ZipCode.where { |
| code ==~ '995%' |
| }.withConnection('auditing').list() |
| ---- |
| |
| or `Criteria` queries: |
| |
| [source,groovy] |
| ---- |
| def c = ZipCode.auditing.createCriteria() |
| def results = c.list { |
| like('code','995%') |
| } |
| ---- |