Поскольку я немного новичок в Grails, мне интересно, как я могу перебирать текущие данные, которые я сохранил в базе данных, чтобы проверить, существует ли информация.
Например, допустим, у меня есть класс домена для книг, и я создаю действие, которое автоматически добавляет больше книг, но я хочу проверить, существует ли book.title, поэтому я не добавляю его снова.
Примечание
Я просто использую базу данных по умолчанию (независимо от того, что используется, когда проект установлен в рабочий режим)
Редактировать
Я опубликую свои домены, чтобы их было легче понять. Вместо book.title я изменил его на то, где книга принадлежит автору. Поэтому я хочу, чтобы автор добавлялся один раз, но смог добавить много книг для него. Проблема возникает в действии, которое я создал в контроллере.
Авторский домен:
class Author {
static hasMany = [books:Book]
String authorName
String notes
String age
String toString() { authorName }
static constraints = {
authorName()
notes(maxSize:500)
age()
}
}
Домен книги:
class Book {
static belongsTo = Author
String toString() { bookNumber }
Author bookAuthor
String title
String numberOfPages
static constraints = {
bookAuthor()
title()
numberOfPages()
}
}
Book Controller (вот где у меня проблемы):
class BookController {
static allowedMethods = [save: "POST", update: "POST", delete: "POST"]
//took out index, create, list, etc. to focus on the once that I'm concerned about
//this action will simple read a text file and add books and authors
def gather = {
def parseData = new parseClient() //parses text file line by line and puts it into a list
def dataHolder = parseData.information //dataHolder will hold data from text file
int linesOfData = dataHolder.size() //get size to iterate and add authors & books
linesOfData.times {
def _author = dataHolder.author[it] //get author - Author
def _age = dataHolder.age[it] //get age - Author
def _title = dataHolder.title[it] //get title - Book
def _pages = dataHolder.pages[it] //get pages - Book
def authorInstance //create new Author to add
authorInstance = new Author() //for some reason I have to create and save AuthorName (can't have other fields) before I can add my Book correctly
authorInstance.setAuthorName(_author)
authorInstance.save()
def bookInstance
bookInstance = new Book() //create a new Book to add
bookInstance.setBookAuthor(authorInstance)
bookInstance.setTitle(_title)
bookInstance.setNumberOfPages(_pages)
bookInstance.save() //has to have access to the authorInstance to add correctly which is why i was wondering how to access the database to grab it if it existed
authorInstance.setAge(_age) //add whatever data is left for Author
authorInstance.save() //save again because cant save it with this information before I add authorInstance to the Book
}
}
}
Текстовое содержимое файла:
//You'll notice that author _Scott Davis_ is in here twice.
//I don't want to add two instances of Scott Davis but need to access it to add the book
//the unique constraint makes the value come up as not null but can't be added
Scott Davis : Groovy Recipes
Bashar Abdul Jawad : Groovy and Grails Recipes
Fergal Dearle : Groovy for Domain-Specific Languages
Scott Davis : GIS for Web Developers: Adding 'Where' to Your Web Applications
Так что я в основном ищу способ добавить эту информацию и не нашел способа, который, кажется, работает без случайных проблем.
Надеюсь, это немного прояснит мой вопрос, так как первоначальный вопрос был немного широким