【问题标题】:Map PostgreSql money data type to ORMLite将 PostgreSql 货币数据类型映射到 ORMLite
【发布时间】:2012-04-01 15:54:19
【问题描述】:

我应该在我的 Java 模型上为 PostgreSQL 货币类型定义什么类型的数据?

我知道我可以使用 BigDecimal,但它映射到 PostgreSQL 上的 varchar(255)。

【问题讨论】:

  • 不要在 Postgres 中使用 money 数据类型 - 请改用 decimal。货币类型有很多问题(例如,它依赖于语言环境,因此可能会在不同的计算机上引入问题,例如,请参见此处:archives.postgresql.org/pgsql-jdbc/2011-11/msg00108.php)。并且永远不要在字符列中存储数字。

标签: java postgresql ormlite


【解决方案1】:

我认为@a_horse 的评论提供了一些很好的信息,但我想我会添加一些额外的ORMLite's 具体细节。

您可以使用 ORMLite 的 BIG_DECIMAL_NUMERIC 将其存储在 Postgres 中为 NUMERIC。您需要将其指定为:

@DatabaseFiled(dataType = BIG_DECIMAL_NUMERIC)
BigDecimal number;

如果您设置使用货币类型,那么您可以定义自己的自定义持久性。您可以查看前面的文档:

http://ormlite.com/docs/custom-persister

还有一个示例项目的代码展示了如何为您的自定义类型定义数据持久性:

http://ormlite.com/docs/data-persister-example

【讨论】:

  • 使用 @DatabaseField(dataType = DataType.BIG_DECIMAL_NUMERIC) 可以很好地将 BigDecimal 映射到 Numeric...我想我将只使用 BigDecimal。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-21
  • 1970-01-01
  • 2018-02-09
  • 2012-07-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多