我们使用OpenCSV解析CSV文件,并通过使用CsvToBean类将其值直接绑定到模型对象(OpenJPA entity bean)。
但是,问题是-- CSV中有一些值(显然)被解析为Strings,但应该在Date属性中设置,因此基本上CsvToBean类在尝试动态调用写入方法时死亡(即尝试使用原始字符串值设置日期属性)。
OpenCSV中是否有任何工具允许我指定应该将每一列映射到哪一种类型?如果没有,您有什么建议来扩展/重新实现哪个类来促进这一点?在OpenCSV目录下检查/test/au/com/bytecode/opencsv/bean/源代码分发中的其他可用策略,我并没有得出任何结论。
我想我可以摆弄Date属性设置器,使它成为一个泛型方法,将类型作为参数传递,并尝试将传递的值解析为Date (如果它已经不是Date ),但是.我们使用的是持久化注释实体,我不希望在后面看到这个" setter -hack“攻击我们,因为OpenJPA增强程序突然不喜欢泛型setter。
几个小时以来,我一直在思考这个问题--我可能会通过使用反射和编写自己的bean绑定逻辑来解决这个问题,但我不喜欢重新发明轮子,我有一种感觉/希望在现有的OpenCSV框架内可以轻松地完成这个任务。
如果需要的话,我可以发布一些代码,但实际上没什么可看的。
有什么想法吗?谢谢。
发布于 2011-04-30 16:03:53
如何在类定义中创建日期属性的副本?我们使用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
}发布于 2012-12-12 21:59:25
或者,您也可以使用超级CSV,它有一个单元处理器 API,它允许您使用该列的ParseDate处理器读取bean (无需修改)。
发布于 2011-04-30 15:59:20
也许一个临时的setter方法和原始的方法一起适用于您:
@Transient
public void setDate(String date) {
Date d = parseDate(date);
setDate(d);
}
@Column
public void setDate(Date date) {
this.date = date;
}https://stackoverflow.com/questions/5842915
复制相似问题