OpenCSV日期解析

qua*_*tum 6 java opencsv

我们使用OpenCSV来解析CSV文件,并使用CsvToBean类将其值直接绑定到模型对象(OpenJPA实体bean).

然而,问题是 - 在CSV中有一些值(显然)被解析为Strings,但应该在Date属性中设置,所以基本上CsvToBean类在尝试动态调用写入方法时死亡(即,它尝试设置Date属性) with raw String value).

OpenCSV中是否有任何工具允许我指定每列应映射到哪种类型?如果没有,你有什么建议可以扩展/重新实现以便于此吗?在/test/au/com/bytecode/opencsv/bean/目录下检查OpenCSV源代码分发中的其他可用strageties 让我没有接近结论.

我想我可以摆弄Date属性setter并使它成为一个泛型方法,它将类型作为参数传递,并尝试解析传递的值,Date如果它还没有Date,但....我们正在使用持久性注释实体,我不希望稍后看到这个"setter-hack"向我们开枪,因为OpenJPA Enhancer突然不喜欢通用的二传手.

我一直在抨击这个问题几个小时 - 我可能通过使用反射和编写我自己的bean绑定逻辑解决了这个问题,但是我不喜欢重新发明轮子并且有一种感觉/希望这可能在现有的OpenCSV框架内轻松完成.

如果需要,我可以发布一些代码,但真的没什么可看的.

有什么想法吗?谢谢.

Kal*_*Kal 5

如何在类定义中创建 Date 属性的副本?我们已经使用 BeanUtils 做了类似的事情

所以,你的 Bean 类包含

String dateString;
Date date;

public void setDateString(String dateString) {
     // This method can parse the dateString and set date object as well
}

public void setDate(Date date) {
     // Use this for JPA
}
Run Code Online (Sandbox Code Playgroud)