2012-06-28 29 views
0

我正在從CSV文件中讀取日期值,值爲'21/08/2009'。 Bindy是給我一個錯誤,而這個分析數據如下:使用Bindy解析數據時的日期模式問題

org.apache.camel.dataformat.bindy.format.FormatException:提供不符合定義的模式日期。

我寫了下面的代碼。

package com.project1.projectdomain; 

import java.lang.String; 
import java.util.Date; 


import javax.persistence.Entity; 
import javax.persistence.Id; 
import javax.persistence.Temporal; 
import javax.persistence.TemporalType; 

import org.apache.camel.dataformat.bindy.annotation.CsvRecord; 
import org.apache.camel.dataformat.bindy.annotation.DataField; 

import com.project.Identifiable; 

@Entity 
@CsvRecord(separator = ",") 
public class Trade implements Identifiable<String> { 
    Classname classobject; 

    @Id 
    @DataField(pos = 1) 
    private String id; 

    @DataField(pos=2) 
    private String code; 

    @Temporal(TemporalType.DATE) 
    @DataField(pos=3) 
    private Date date1; 

    @Temporal(TemporalType.DATE) 
@DataField(pos=4) 
    private Date date2; 

我使用maven來構建項目,jpa 3.0和apache camel。

+0

什麼是您的數據是什麼樣子?關於錯誤的更多上下文(stacktrace)也可能有助於快速響應 –

+0

它解析上面指定的日期字段時會產生錯誤。有趣的是,從CSV讀取此字段時,無法將其解析爲日期字段。 –

+0

可能的重複[無法找到所需的格式化程序的類型java.sql.Date](http://stackoverflow.com/questions/11220494/cannot-find-the-required-formatter-for-the-type-java- sql-date) – DataNucleus

回答

1

有您需要在@DataField設置,並指定根據DateFormat使用日期模式的pattern attribute

@DataField(pos=4, pattern="dd/MM/yyyy") 
+0

您好克勞斯,我真的很感激您的答覆。我將java.util.date更改爲java.sql.Date。然後我指定了如下模式@DataField(pos = 3,pattern =「dd- MM-yyyy「) private Date tradeDate;但是,它給了我這樣的錯誤:無法找到適合該類型的格式化程序:java.sql.Date.How我可以解決這個問題嗎? –

+0

我得到了一個奇怪的解決方案,這個問題。我右鍵單擊csv文件,並將日期從「21/08/2009」更改爲「21-08-2009。它的工作。它正確解析它。如何解析日期的模式「dd/MM/yyyy」謝謝Claus –

+1

您應該使用java.util.Date –