如何让 Apache Cayenne 尊重数据库默认设置?

Posted

技术标签:

【中文标题】如何让 Apache Cayenne 尊重数据库默认设置?【英文标题】:How do I make Apache Cayenne respect database defaults? 【发布时间】:2018-03-07 17:31:08 【问题描述】:

我有一个带有一些默认值的 postgres 数据库,例如:

CREATE TABLE product (
    id serial,
    name text,
    created_at DEFAULT now(),
    price numeric DEFAULT 9.99
);

当我执行context.newObject(Product.class) 时,如何让 Cayenne 遵守这些默认设置?

目前我正在连接onPostAdd 回调,然后在那里设置我的默认值,但我想知道这是否是唯一的方法?我不能以某种方式使用我的数据库默认值来保留它DRY

我正在使用 Apache Cayenne 4.1。

【问题讨论】:

【参考方案1】:

很遗憾,onPostAdd 是您最好的选择。这是最坏的对象关系阻抗。作为 Cayenne 的作者之一,我很清楚这个问题。希望有一个干燥的解决方案。

【讨论】:

不用担心。我创建了一个gist that does pickup default values,代价是额外的查询。感谢 Cayenne,太棒了!

以上是关于如何让 Apache Cayenne 尊重数据库默认设置?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Apache Cayenne 批量插入数据库表

Apache Cayenne“类未与 Cayenne 映射”

Apache Cayenne 是不是可以在没有数据库的情况下预填充 ObjectContext?

Apache Cayenne - 批量关系设置

Apache Cayenne:处理 Postgresql 枚举类型

Apache Cayenne:将固定与动态提供的 DataMap 合并到一个 ServerRuntime