Прежде всего, вам нужен ключ для вашего объекта домена Book.У вас есть название, помеченное как уникальное, что означает, что вы хотите использовать его для уникальной идентификации Книги.Я бы рекомендовал против этого (что происходит, когда две книги имеют одно и то же название?) И по умолчанию предоставляю id grails.Это означает, что вам придется хранить идентификатор в вашем currentBooks.txt
в дополнение к другим полям.
После того, как вы получили идентификатор, вы можете попробовать загрузить существующую запись из базы данных.Если нет, создайте новый.Например:
def dir = 'C:/currentBooks.txt'
def bookList
bookList = readFile(dir) //read file and push values into bookList
int numOfBooks = bookList.size()
numOfBooks.times {
def bookInstance.get(bookList.id[it])
if (!bookInstance) {
bookInstance = new Book()
}
bookInstance.setBookAuthor(bookList.author[it])
bookInstance.setTitle(bookList.title[it])
bookInstance.setCurrentPage(bookList.title[it])
bookInstance.save()
}
В качестве альтернативы вы можете использовать заголовок в качестве идентификатора.Это плохая идея, как указано выше, но она избавляет от необходимости отслеживать отдельный идентификатор и изменять формат currentBooks.txt
.Если книга определена, как показано ниже, вы можете позвонить Book.get(bookList.title[it])
:
class Book {
static belongsTo = Author
String toString() { title }
Author bookAuthor
String title
String currentPage
static constraints = {
bookAuthor()
title(unique:true)
currentPage()
}
static mapping = {
id name: 'title', generator: 'assigned'
}
}