我已经实现了store_mapping扩展,但它目前使用的是ObjectAsStringMapping。因此,我可以从数据库读取数组值,但是任何插入或更新都会导致底层postgresql驱动程序错误"INTEGER[]“不是"VARCHAR”。
有办法在JDO中实现PGSQL数组吗?对于所有这些扩展点,它看起来相当灵活。任何关于我必须实现的扩展点的提示都是非常感谢的,谢谢!
编辑:
我使用postgres int8作为bit字段,作为数组的“替代”,因为我知道我可以使用63个可能的值。
样本类将是:
@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的映射,但仍然不知道如何实现。我可以编写扩展和覆盖默认行为,但是它应该是什么扩展点呢?
发布于 2013-03-22 09:43:48
看起来您需要构建一个自定义字段策略来处理映射。
然后,关键是将本例中的表示转换为PostgreSQL数组表示,即以逗号分隔的值(使用带有任何特殊字符的"转义文本,但可以在所有值上使用,双引号通过加倍进行转义)。然后,将字符串括在绞股蓝、{和}中。所以ARRAY[1,2,3]::int[]变成了'{1,2,3}'或'{"1","2","3"}'
https://stackoverflow.com/questions/7382508
复制相似问题