【问题标题】:How to force Grails to use proper column type in MySQL for Map field如何强制 Grails 在 MySQL 中为 Map 字段使用正确的列类型
【发布时间】:2011-01-01 06:53:00
【问题描述】:

我在 Grails 1.1.2 + MySQL 中有一个问题。

我的域类Something contains field

Map<String, Map<Integer, Integer>> priceMap

当我运行应用程序时,Grails 会创建表“something”和子表“something_price_map”。 'something_price_map' 包含

BIGINT(20) price_map
VARCHAR(255) price_map_idx
TINYBLOB price_map_elt

问题是当我填写 priceMap 列时,即使使用像这样的小地图数据 'priceMap:[en:[100:4, 500:20, 600:24]]',数据的大小超过255字节的限制。

有没有办法为内部映射(Map)指定 maxSize 约束,以便 Grails 使用 MEDIUMBLOB 或 BLOBK 而不是 TINYBLOB?

顺便说一句...使用内存数据库,一切正常。

【问题讨论】:

    标签: mysql grails database hibernate-mapping autocreate


    【解决方案1】:

    您可能知道,域类有一个mapping constraint。但是,对于该功能,您的问题可能过于复杂。

    在这种情况下,您可以为域类指定explicit Hibernate mapping(通过 hbm 文件)。这使得 Hibernate 具有完全的灵活性。

    【讨论】:

    • 是的,这就是问题所在——复杂性。对于简单的地图,我可以使用 maxSize 约束,但我需要为内部地图指定 maxSize。感谢推荐hbm文件。如果我没有找到更好的解决方案,我会尝试这个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    • 2019-07-18
    相关资源
    最近更新 更多