2011-05-09 58 views
0

更新:取得有关类等一些错误的假设下,现在发生的时候我有一个“示范”项目:ConversionNotSupportedException有类似的命名类

我有两个班,并重命名为“公司”。

  • 一个被放置在的grails-app /域/ my.classes.domain.Company
  • 其他在src /常规/ my.clazz.Company

最后一个具有一@Validateable注释,和Config.groovy包含grails.validateable.packages = ['my.clazz']

我也有一个Account类,在grails-app/domain/my.classes.domain.Account:

package my.classes.domain

import java.io.Serializable;

class Account implements Serializable { Company company }

然后我用下面的代码(在BootStrap.groovy中):

import my.classes.domain.Company 
import my.classes.domain.Account 
... 
Company company = new Company 
Account acccount = new Account(company: company) 

当运行这个程序,将显示以下错误:

 
Caused by: org.springframework.beans.ConversionNotSupportedException: Cannot convert value of type [my.clazz.Company] to required type [my.classes.domain.Company] for property 'company': no matching editors or conversion strategy found 
    ... 33 more 
Caused by: java.lang.IllegalStateException: 
Cannot convert value of type [my.clazz.Company] to required type [my.classes.domain.Company] for property 'company': no matching editors or conversion strategy found 

这是一个很奇怪的例外,因为一切似乎都很好。 一些测试证明了以下“提示”: 当我修改config.groovy以明确命名类时(例如,使用grails.validateable.classes = ['my.classes.domain.Company']),不会发生此错误。当我修改帐户的公司财产有不同的名称(并相应修改自举)不会发生 此错误,即:

class Account extends Serializable { 
    Company cmp 
} 

然而,这些解决方法。我真的很感兴趣,为什么这是发生。任何人都有线索?

只是要在安全方面,我做了以下创建这个问题:

  1. 创建域类:my.classes.domain.Company
  2. 创建域类:my.classes.domain .Account
  3. 修改域类如上
  4. 创建Groovy类:my.clazz.Company
  5. 给这个常规类是Validatable注释。
  6. 的my.clazz包添加到validateable包在引导
  7. ,创建新帐户的新帐户(公司:公司)

回答

0
从代码中的各种拼写错误,这使得问题

除了很难确定,问题似乎是,您正在尝试使用my.class.domain.Company类型设置my.class.Company类型的Account.company属性。您的引导程序需要更改为:

import my.class.Company 
import my.class.Account 

Company company = new Company 
Account acccount = new Account(company: company) 

请注意,公司的正确导入语句。

+0

修改的问题,然而,这其实是我不想要的东西:我想用我的.classes.domain。*在我的引导程序中的东西... – 2011-05-09 13:06:02

+1

然后,您需要明确指出哪个公司帐户参考。帐户需要my.class.Company。您需要修改帐户以支持此操作。 – Gregg 2011-05-09 13:09:56

+0

我想更大的问题是你为什么要这样做?为什么持久化类不是域? – Gregg 2011-05-09 13:11:45

0

根据你描述的错误,我认为Grails已经确定了错误:你转入Account的公司被确定为my.clazz.Company,而不是my.classes.domain.Company。

你可以把一个简单的检查就知道肯定有什么的company在引导类型:

import java.lang.Class; 
... 
println company.getClass().getName()