【问题标题】:Grails/GORM lazy loading of CLOB fieldCLOB 字段的 Grails/GORM 延迟加载
【发布时间】:2015-01-07 02:01:33
【问题描述】:

我正在尝试使我的 Grails 域类的一个字段延迟加载。实际上这是 DB 中的一个 CLOB 列,但它映射到 Grails 域类中的 String 字段。 所以我为这个类创建了以下休眠映射:

<hibernate-mapping>
<class name="MyClass" table="my_table">
    <id name="id" column="id">
        <generator  class="native"/>
    </id>       
    <property name="clobCol" type="materialized_clob" lazy="true"/>
    <property name="someOtherField" type="string"/>
</class>
</hibernate-mapping>

我的域类如下所示:

class MyClass {

    String someOtherField

    String clobCol

    static constraints = {
        clobCol(nullable: true)
    }
}

当我使用 DetachedCriteria 查询数据库时,我期望 clobCol 应该是惰性的。但实际上它正在被急切地加载。 是否可以通过这种方式使字段变得懒惰?如果是,那么我做错了什么?如果没有,那么在没有大量重构类和现有查询的情况下,让 clobCol 变得懒惰的最佳方法是什么?

【问题讨论】:

    标签: hibernate grails grails-orm lazy-loading clob


    【解决方案1】:

    我相信您可以通过在您的域类中声明一个名为 fetchMode 的属性来实现此目的,该属性包含属性/获取类型的映射

    class MyClass {
    
        static fetchMode = [clobCol: 'lazy']
    
        ...
    }
    

    【讨论】:

    • 据我所知,这仅适用于关联,不适用于字段。这就是为什么我试图在hibernate映射文件中配置这样的行为,hibernate应该有这个能力。
    • @its.ok009 我明白了。您是否检查过这个问题和答案中的链接?可能会有所帮助。 stackoverflow.com/questions/11526255/…
    • 好的,谢谢迈克。我已经检查了这些关于它在 Java/Hibernate 中如何工作的说明。不幸的是,如果可能的话,我没有找到任何关于如何在 Grails 中打开“字节码检测”的信息
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多