2013-01-11 126 views
3

postgres列类型将映射到基于hibernate的列中的Java Float类型?什么Postgres类型将映射到类型Float的休眠列?

我有我的遗留postgres数据库中浮动(19),但如果启用hibernate模式验证我得到这个错误信息。

Wrong column type in realtorprint.templatetype for column height. 
Found: float8, expected: float4 

任何想法?我的专栏是浮动(8),而不是浮动(19)我可能会在我们的旧数据库中改变这一点。

+0

我希望你知道使用浮点数是一个坏主意(在Java和Postgres中)。由于它们代表的方式,你不一定会回到你放入的内容。使用'BigDecimal'(Java)或'decimal'(在Postgres中)是一个更好的选择。 http://floating-point-gui.de/ –

+0

@a_horse_with_no_name不是一个普遍不好的主意;它们非常适合存储测量值和其他数量的值,其中精确表示不如效率重要,并且能够将值存储在大范围的值中。不过,将它们用于货币是一个糟糕的主意。 –

+0

我使用了一个浮点数,因为此宽度/高度列映射到PDF宽度/高度单位,这基本上是一个浮点数。 – benstpierre

回答

3

hibernate如何将Java类型映射到SQL类型由对应于您的RDBMS的Dialect的子类控制。准确地说,你使用哪一个可能取决于你的Hibernate和Postgres版本。

但我怀疑在大多数情况下,Java浮动地图浮动(4)和Java双映射浮动(8)。

这是开源的,你可以得到代码,并检查确定你的情况发生了什么。

您还可以通过配置替换自己的方言,尽管它很少适合。 (它适用于偶尔的错误修正。)

相关问题