1

我目前正在尝试在 Grails 中保存与域模型关联的数字列表,但我不断收到错误消息。所以场景是:

我有一个如下所示的客户端域模型,它与下面显示的 PhoneNumbers 域模型具有 HasMany 关系。有一个视图,其中添加了一堆数字,然后将它们存储在 String [] 中以便在控制器上进行处理。

客户域:

class Client {

    String name

    List numbers = new ArrayList()

    //This represents a message belonging to a single department
    static hasMany = [numbers:PhoneNumbers]

    static constraints = {
        name(blank:false)
    }


}

电话号码域:

class PhoneNumbers {

    String number

    //This represents a message belonging to a single department
    static belongsTo = [client:Client]

    static constraints = {
        number(blank:false)
    }


}

如您所见,客户有许多电话号码,并且电话号码属于一个客户。所以在我的控制器中,我假设我需要做的就是将这些数字传递给数组或列表中的域,它会处理级联保存,我的控制器功能如下:

//This is an array of phone numbers stored in a sesson object as String []
        def numbers = session.getAttribute("phoneNumbers")

        def numbersConvert = numbers as List

        def client = new Client(numbers: numbersConvert, name: params.name)

        if (!client.save()) {
            client.errors.each{
                println(it)
            }
        }

因此,我希望上面的控制器获取我已确认具有值的数字数组,然后将其转换为列表。然后保存新的客户端数据并级联保存该客户端在列表中的所有号码。但是,这不起作用,我收到以下错误:

GRAILS-7799: Subtype 'java.lang.String' of reloadable type com.tool.PhoneNumbers is not reloadable: may not see changes reloaded in this hierarchy (please comment on that jira)
| Error 2013-07-30 07:56:50,831 [http-bio-8080-exec-4] ERROR property.BasicPropertyAccessor  - IllegalArgumentException in class: com.smstool.PhoneNumbers, getter method of property: id
| Error 2013-07-30 07:56:50,836 [http-bio-8080-exec-4] ERROR errors.GrailsExceptionResolver  - IllegalArgumentException occurred when processing 
object is not an instance of declaring class. Stacktrace follows:
Message: object is not an instance of declaring class

我也尝试了另一种方法来保存控制器中的数据,如下所示,但这也不起作用:

numbers.each{

            def phoneNumber = new PhoneNumber(number: it).save(flush: true)

            client.addToPhoneNumber(phoneNumber).save(flush: true)

        }

我想我错过了一些愚蠢的事情,这可能是一件非常容易做的事情,只是太累了,需要一点帮助。

提前致谢

4

0 回答 0