oracle - 在休眠中映射 NUMBER(15)
问题描述
因此,我们的数据模式列中有 type NUMBER(15)
。如何在不更改架构的情况下将其映射到休眠状态?int
数据类型太小了,long
数据类型太大了(ORA-01438),即使在持久化具有 DB 列边界的数字时也是如此。
假设,该模式是不可修改的,我们不想使用 BigInteger。比如说,我们知道,这个数字不会大于 372036854775807,因此可以同时放入 long 和 NUMBER(15)。
甲骨文数据库。
解决方案
所以实际上这是我的错,因为在数字比例和精度方面误读了 Oracle 文档。我想,精度是“。”之前的部分,然后是比例,但是不,精度是所有数字的数量。这导致了我的问题,并且在不同的列上。
回答我自己的问题:对于适合 DB 层中使用的类型的数字,不会抛出 ORA-01438。因此,如果我知道,应用层上使用的数据类型不能大于 number(15),我可以安全地在 java 中使用 long,在 DB 中使用 NUMBER(15)。在违反此约束之前,一切都很好。首先,遵守这个约束很重要,没有它 BigInteger 也无济于事,因为 BigInteger 可以大于 NUMBER(37)。
推荐阅读
- openapi - 在 OpenAPI 3.0 中,我应该为具有指定格式的字符串指定 maxLength 吗?
- arrays - 如果结果在 vue 中相等,则检查 2 个数组
- python - 在 PuLP 中添加逻辑约束
- python - /tmp 中不存在 s3 下载的文件
- raspberry-pi - 树莓派 LineageOS 18.1 上没有 GPS
- powershell - 如何在 Powershells 的输出中进行无缓冲/实时替换?
- azure - 从 Azure Pipeline 运行 maven 作业时出现 java 版本错误
- reactjs - 反应会话:错误!您需要指定会话名称
- c# - 使用 C# 查找示例模式
- javascript - 将具有多个值的对象和键推送到 for 循环中的数组