Grails 戈姆:挽救一段多人的关系

Grails 戈姆:挽救一段多人的关系,grails,gorm,Grails,Gorm,只是尝试保持GORM实体之间的关系,在保存期间映射上会出现溢出错误 1) 我在用户和数据存储之间创建了许多关系: User entity: ... static belongsTo = DataStore static hasMany = [groups: Groups,dataStore:DataStore] Profile profile Contacts contact DataStore dataStore ... DataStore entity:

只是尝试保持GORM实体之间的关系,在保存期间映射上会出现溢出错误

1) 我在用户和数据存储之间创建了许多关系:

User entity: 
...
static belongsTo = DataStore
    static hasMany = [groups: Groups,dataStore:DataStore]

    Profile profile
    Contacts contact
    DataStore dataStore
...

DataStore entity:
...
static belongsTo = [service:Service]
    static hasMany = [users:User]

    Service service
    List<User>   users
...
3) 服务逻辑:

 @Transactional
    def createDS(ds,service,user) {
        def key = service.domainkey
        if (user && key) {
            DataStore ds = new DataStore(ds:ds)
            ds.validate() ? ds.save(flus:true) : ds.errors.allErrors.println()
            ds.addToUsers(user).save(flush:true)
            service.addToDataStore(ds).save(flush:true)
            user.setDataStore(ds)
...}
4) 我需要解决的奇怪错误是:

跟踪如下: org.codehaus.groovy.grails.web.servlet.mvc.exceptions.ControllerExecutionException:执行控制器[$$.StoreController]的操作[sendOrder]导致异常:执行操作时出错 位于grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:195) 位于grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63) 位于net.bull.javamelody.JspWrapper.invoke(JspWrapper.java:149) 位于net.bull.javamelody.JdbcWrapper$DelegatingInvocationHandler.invoke(JdbcWrapper.java:259) 位于net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:202) 位于net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:175) 位于java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 运行(Thread.java:680) 原因:org.codehaus.groovy.grails.web.servlet.mvc.exceptions.ControllerExecutionException:执行操作时出错 ... 9更多 原因:java.lang.reflect.InvocationTargetException ... 9更多 原因:java.lang.StackOverflower错误 位于org.apache.commons.validator.EmailValidator.stripComments(EmailValidator.java:246) 位于org.apache.commons.validator.EmailValidator.isValid(EmailValidator.java:95)


有什么帮助吗?

您将变量
数据存储定义了两次:一次在
中有多个
,一次作为直接引用

尝试:

编辑

再次查看堆栈跟踪后,问题与Melody无关(可能?可能不是?),但请告诉我们问题出在哪里)

检查用户的电子邮件引用(不确定它位于哪个子域类,可能是联系类?打印它或使用调试器检查域值,然后再次检查约束)。如果电子邮件问题与您的域类无关,请再次仔细检查

org.apache.commons.validator.EmailValidator.isValid(EmailValidator.java:95)

--仍然要仔细检查Melody在做什么


如果问题与Melody有关,请告知我们,仅供个人参考。我在使用该插件的人身上看到了很多随机问题,它看起来很有用,但有缺陷。

只需按照hibernate文档重做我的模型:

class User implements Serializable {

    static hasMany = [dataStores:DataStore,contacts:Contacts,groups: Groups]

    Profile profile
    Contacts contacts
    List<DataStore> dataStores

明确地消除几个溢出,并保持模型的可靠性。

您确定服务中存在此问题吗?提供控制器代码。添加的控制器代码:在此处调用服务逻辑以相应地创建DS ans用户。是否在域
数据存储中执行任何自定义验证?什么是DS.save(flus:true)?flus?@dmahapatro:DS类中没有自定义验证,只有一个将“验证前”转换为大写的转换器。@猫先生:这是一个(同花顺:真的),很抱歉打字错误。我用的是melody版本1.13,也就是最后一个版本。我目前正在将melody日志与应用程序的其余部分隔离。我的答案(胡乱猜测)与您看到的问题可能是melody bug这一事实有关。如果你卸载插件,无法重现问题,那么肯定是melody bug,试试看,你有什么需要释放的。我希望是melody,但不是。因为我在数据存储域类中有列表,我在用户的电子邮件验证程序上有这个错误,该死
User entity: 
...

static belongsTo = [datastore: DataStore]

static hasMany = [groups: Groups,dataStores:DataStore]

Profile profile
Contacts contact

...
class User implements Serializable {

    static hasMany = [dataStores:DataStore,contacts:Contacts,groups: Groups]

    Profile profile
    Contacts contacts
    List<DataStore> dataStores
class DataStore implements Serializable{

    static hasMany = [users:User,contacts:Contacts]
    static belongsTo = [service:Service]

    Service service
    User users