首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JDO + PostgreSQL阵列

JDO + PostgreSQL阵列
EN

Stack Overflow用户
提问于 2011-09-12 01:22:38
回答 1查看 468关注 0票数 1

我已经实现了store_mapping扩展,但它目前使用的是ObjectAsStringMapping。因此,我可以从数据库读取数组值,但是任何插入或更新都会导致底层postgresql驱动程序错误"INTEGER[]“不是"VARCHAR”。

有办法在JDO中实现PGSQL数组吗?对于所有这些扩展点,它看起来相当灵活。任何关于我必须实现的扩展点的提示都是非常感谢的,谢谢!

编辑:

我使用postgres int8作为bit字段,作为数组的“替代”,因为我知道我可以使用63个可能的值。

样本类将是:

代码语言:javascript
复制
@PersistenceCapable(detachable="true", table="campaigns")
public class Campaign  implements Serializable {

    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    public Long id;

    public List<Integer> regions;
}

我认为我必须实现一些从List到java.sql.Array的映射,但仍然不知道如何实现。我可以编写扩展和覆盖默认行为,但是它应该是什么扩展点呢?

EN

回答 1

Stack Overflow用户

发布于 2013-03-22 09:43:48

看起来您需要构建一个自定义字段策略来处理映射。

然后,关键是将本例中的表示转换为PostgreSQL数组表示,即以逗号分隔的值(使用带有任何特殊字符的"转义文本,但可以在所有值上使用,双引号通过加倍进行转义)。然后,将字符串括在绞股蓝、{}中。所以ARRAY[1,2,3]::int[]变成了'{1,2,3}''{"1","2","3"}'

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7382508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档