Skip to content

Instantly share code, notes, and snippets.

@graemerocher
Last active December 24, 2015 03:11
Show Gist options
  • Save graemerocher/9683543 to your computer and use it in GitHub Desktop.
Save graemerocher/9683543 to your computer and use it in GitHub Desktop.
Using GORM for MongoDB in Spring Boot
@Grab("org.grails:gorm-mongodb-spring-boot:1.0.0.RC1")
import grails.persistence.*
import grails.mongodb.geo.*
import org.bson.types.ObjectId
import com.mongodb.BasicDBObject
import org.springframework.http.*
import org.springframework.beans.factory.annotation.Autowired
import static org.springframework.web.bind.annotation.RequestMethod.*
@RestController
class CityController {
@RequestMapping(value="/", method = GET)
List index() {
City.list().collect { [name: it.name] }
}
@RequestMapping(value="/near/{cityName}", method = GET)
ResponseEntity near(@PathVariable String cityName) {
def city = City.where { name == cityName }.find()
if(city) {
List<City> closest = City.findAllByLocationNear(city.location)
return new ResponseEntity([name: closest[1].name], HttpStatus.OK)
}
else {
return new ResponseEntity(HttpStatus.NOT_FOUND)
}
}
@PostConstruct
void populateCities() {
City.withTransaction{
City.collection.remove(new BasicDBObject())
City.saveAll( [ new City(name:"London", location: Point.valueOf( [-0.125487, 51.508515] ) ),
new City(name:"Paris", location: Point.valueOf( [2.352222, 48.856614] ) ),
new City(name:"New York", location: Point.valueOf( [-74.005973, 40.714353] ) ),
new City(name:"San Francisco", location: Point.valueOf( [-122.419416, 37.774929] ) ) ] )
}
}
}
@Entity
class City {
ObjectId id
String name
Point location
static constraints = {
name blank:false
location nullable:false
}
static mapping = {
location geoIndex:'2dsphere'
}
}
@RaviH
Copy link

RaviH commented Jan 5, 2015

Is there any way to customize the constraint validation error message? If so, how? And if we can customize the constraint validation message like in Grails, would you recommend Spring Boot over Grails if application is being used as a RESTful service?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment