保存域模型中的数字列表错误?

时间:2013-07-30 15:21:49

标签: grails gorm

我目前正在尝试保存与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)
            }
        }

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

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)

        }

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

提前致谢

0 个答案:

没有答案