实现Java类型与SQL类型映射的最佳实践与默认的不同吗

实现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字段,则

我正在JPA2.0项目中工作,该项目将实体生成到大约100个表(Informix)。我的需求告诉我,工件必须提供一个干净的解决方案,以这种方式管理数据类型转换:

  • 浮点SQL类型必须实现为浮点Java类型,而不是默认的Java双精度类型

  • 日期SQL类型必须实现为日历Java类型,而不是默认的Java SQL日期类型

IMO最简单的方法是创建一个实用程序类,提供适当的强制转换,并在必要时使用它


是否有任何工具或类似工具可以帮助自动化此任务?

如果您用注释
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浮点映射到Java
FLOAT
来降低精度?SQL FLOAT在内部表示为C
double
aka Java
double
;SQL SMALLFLOAT对应于Java
float
。您好Jonathan,我们目前处于概念验证阶段,您是对的,强制转换为float意味着精度损失,但这是文档中有人(不是我)定义的,也许在某一时刻考虑使用非默认值。直觉:至少在Informix SQL中,有人误解了SQL FLOAT的含义。这更可能是一个错误,而不是一个深思熟虑的决定。为什么要通过将SQL浮点映射到Java
FLOAT
来降低精度?SQL FLOAT在内部表示为C
double
aka Java
double
;SQL SMALLFLOAT对应于Java
float
。您好Jonathan,我们目前处于概念验证阶段,您是对的,强制转换为float意味着精度损失,但这是文档中有人(不是我)定义的,也许在某一时刻考虑使用非默认值。直觉:至少在Informix SQL中,有人误解了SQL FLOAT的含义。这更可能是一个错误,而不是一个深思熟虑的决定。