我有一个表,其中日期列存储为varchar。 在进行Object关系映射时(我正在使用eclipselink)我想将此字符串/ varchar映射到java中的Date对象。
我的表是:
T_BUSINESS TRAN_ID Number, BUSINESS_DATE Varchar
并且我想选择营业日期在两个输入日期之间的所有行,这里问题是因为BUSINESS_DATE是varchar我无法进行比较。我不能修改表,我不想使用Native sql。
有人能告诉我怎么能这样做。
提前致谢!
答案 0 :(得分:1)
您可以使用TypeConverter来映射它,
请参阅,
http://www.eclipse.org/eclipselink/documentation/2.4/jpa/extensions/a_typeconverter.htm#CHDHCCJF
在查询中进行比较可能会更困难,我认为默认日期格式为yyyy-mm-dd,因此varchar比较可能有效。否则,您确实需要数据库上的真实DATE字段。您可以使用数据库函数将varchar转换为DATE以进行比较,例如使用CAST或FUNCTION,其中EclipseLink支持是JPQL。
请参阅, http://www.eclipse.org/eclipselink/documentation/2.4/jpa/extensions/j_cast.htm#cast
http://www.eclipse.org/eclipselink/documentation/2.4/jpa/extensions/j_func.htm#func