hibernate - Grails Domain Binder.getMapping(Domain)对于Grails-3.2.4中的非持久性域返回null

标签 hibernate grails groovy gorm grails3.2.0

我有两个域。

class ABC{

    String xyz

    static mapping = {
        discriminator column: 'ABC_TYPE_ID'
    }
}


class XYZ extends ABC{

    static mapWith = "none"

    static mapping = {
        discriminator value: 3
    }   
}

在Grails 2.5.5中,下面的行可以很好地工作,但是在进行了必要的更改后,它在Grails-3.2.4中不起作用,并且给出了null。
Mapping mapping = new GrailsDomainBinder().getMapping(XYZ) //Works fine Grails 2.5.5

Mapping mapping = GrailsDomainBinder.getMapping(XYZ) // Giving null in Grails-3.2.4

请帮助我从XYZ域中获取Mapping对象。

我的发现:

我在application.yml中使用带有注释 #dbCreate:''的oracle db。

在XYZ域中评论静态mapWith =“none” 之后,我得到了Mapping对象,由于 #dbCreate:''而未在DB中创建相应的表。

这种方法有什么问题吗?如果是,请为我提供替代解决方案。

最佳答案

在最新版本的GORM中,静态部分已被删除。您需要使用MappingContext对象来获取所需的内容:

MappingContext mappingContext = .. // can be injected via Spring
Mapping mapping = (Mapping)mappingContext.getPersistentEntity(Foo).mapping.mappedForm

参见http://gorm.grails.org/latest/hibernate/api/org/grails/datastore/mapping/model/MappingContext.html

关于hibernate - Grails Domain Binder.getMapping(Domain)对于Grails-3.2.4中的非持久性域返回null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41980212/

相关文章:

java - MySQL 的 Hibernate 类中出现未知实体错误

hibernate - Grails和JPA集成

mysql - Hibernate 创建模式中的 UTF-8 问题

grails - Windows上的Grails/aNimble:获取找不到指定的路径

grails - 如何在Grails应用程序中基于m.mysite.com重定向到移动页面

java - 为什么在 Controller 或服务中,我们可以访问延迟加载的代理对象,但不能在 AbstractUserDetailsAuthenticationProvider 的子类中访问?

java - Grails war 命令 : what happens behind the scene

json - 在 Jenkins Pipeline 上解析 JSON (groovy)

grails - Grails检查唯一约束

json - 在 Groovy/Grails 中生成的 JSON 中插入嵌套项