(Quick Reference)



Uses named arguments that match the property names of the domain class to produce a query that returns the first result. This method behaves just like findWhere except that it should never return null. If a matching instance cannot be found in the database then a new instance is created, populated with values represented in the query parameters, saved and returned. The difference between this method and findOrCreateWhere is that this method will save any newly created instance where findOrCreateWhere does not.


Given the domain class:

class Book {
   String title
   Date releaseDate
   String author

static constraints = { releaseDate nullable: true } }

You can query in the form:

def book = Book.findOrSaveWhere(author:"Stephen King", title:"The Stand")



  • queryParams - A map of key value pairs to be used in the query. If no matching instance is found in the database then this map is used to initialize a new instance.