实现Java类型与SQL类型映射的最佳实践与默认的不同吗
我正在JPA2.0项目中工作,该项目将实体生成到大约100个表(Informix)。我的需求告诉我,工件必须提供一个干净的解决方案,以这种方式管理数据类型转换:实现Java类型与SQL类型映射的最佳实践与默认的不同吗,java,sql,jpa,informix,Java,Sql,Jpa,Informix,我正在JPA2.0项目中工作,该项目将实体生成到大约100个表(Informix)。我的需求告诉我,工件必须提供一个干净的解决方案,以这种方式管理数据类型转换: 浮点SQL类型必须实现为浮点Java类型,而不是默认的Java双精度类型 日期SQL类型必须实现为日历Java类型,而不是默认的Java SQL日期类型 IMO最简单的方法是创建一个实用程序类,提供适当的强制转换,并在必要时使用它 是否有任何工具或类似工具可以帮助自动化此任务?如果您用注释java.util.Calendar字段,则
- 浮点SQL类型必须实现为浮点Java类型,而不是默认的Java双精度类型
- 日期SQL类型必须实现为日历Java类型,而不是默认的Java SQL日期类型
是否有任何工具或类似工具可以帮助自动化此任务?如果您用注释
java.util.Calendar
字段,则生成的SQL应为日期类型,例如:
@Temporal(TemporalType.DATE)
@Column(name = "SOME_DATE")
private Calendar someDate;
此外,您可以指定如何使用以下命令生成列的DDL:
如果用注释java.util.Calendar
字段,则生成的SQL应为DATE
类型,例如:
@Temporal(TemporalType.DATE)
@Column(name = "SOME_DATE")
private Calendar someDate;
此外,您可以指定如何使用以下命令生成列的DDL:
为什么要通过将SQL浮点映射到JavaFLOAT
来降低精度?SQL FLOAT在内部表示为Cdouble
aka Javadouble
;SQL SMALLFLOAT对应于Javafloat
。您好Jonathan,我们目前处于概念验证阶段,您是对的,强制转换为float意味着精度损失,但这是文档中有人(不是我)定义的,也许在某一时刻考虑使用非默认值。直觉:至少在Informix SQL中,有人误解了SQL FLOAT的含义。这更可能是一个错误,而不是一个深思熟虑的决定。为什么要通过将SQL浮点映射到JavaFLOAT
来降低精度?SQL FLOAT在内部表示为Cdouble
aka Javadouble
;SQL SMALLFLOAT对应于Javafloat
。您好Jonathan,我们目前处于概念验证阶段,您是对的,强制转换为float意味着精度损失,但这是文档中有人(不是我)定义的,也许在某一时刻考虑使用非默认值。直觉:至少在Informix SQL中,有人误解了SQL FLOAT的含义。这更可能是一个错误,而不是一个深思熟虑的决定。