grails - GORM : saving a manyTomany relationship

标签 grails grails-orm

只是试图保持 GORM 实体之间的关系,并且在保存期间在映射上附加溢出错误。

1)我在用户和数据存储之间创建了一个manyTomany关系:

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
...

2)从 Controller 调用服务以保存数据:
 UserRole.create user, roleCustomer, true
        UserRole.create user, roleAdmin, true
        dataStoreService.createDS('ds',profile.service,user)

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:执行 Controller [$$.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)
在 java.lang.Thread.run(Thread.java:680)
引起:org.codehaus.groovy.grails.web.servlet.mvc.exceptions.ControllerExecutionException:运行时错误执行 Action
... 9 更多
引起:java.lang.reflect.InvocationTargetException
... 9 更多
引起:java.lang.StackOverflowError
在 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 有关,请告知我们,仅用于个人信息。我从使用该插件的人那里看到了很多随机问题,它看起来很有用但有问题。

关于grails - GORM : saving a manyTomany relationship,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16292818/

相关文章:

grails - 在 Controller 中处理grails异常以进行捕获和转发

Grails 2 - 如何动态调用多个数据源

Grails 自定义监听器,更新属性会生成其他事件吗?

grails - 保存新记录时动态发现关系的更好方法? (对方失败)

java - grails 服务中的深度递归失败

grails - Grails db-reverse-engineer ID和版本

grails - 合并两个Groovy映射并获得差异

grails - Grails按位运算符

hibernate - Grails 乐观锁定不检测并发更新?

validation - 升级后 Grails 验证不起作用