2011-12-06 29 views
0

我有這樣的代碼:的EclipseLink - @ReadTransformer

@Column(name = "foo") 
@ReadTransformer(transformerClass=transformer.class) 
private Date foo; 

public static class transformer implements AttributeTransformer { 

    @Override 
    public void initialize(AbstractTransformationMapping atm) { 

} 

    @Override 
    public Object buildAttributeValue(Record record, Object o, Session sn) { 

    } 

} 

我的問題是,我該如何獲取值(從列富)變換buildAttributeVaule內?它不在記錄數組內。

回答

0

首先通過打開日誌記錄來檢查生成的SQL是否在「foo」列中讀取。如果是,則檢查數據庫是否返回「foo」而不是「FOO」 - java在字符串查找中區分大小寫。可能是因爲「FOO」是記錄而不是「foo」。

+0

感謝這個,它出現在select查詢不被要求現場它產生。我認爲這是因爲我沒有爲日期字段指定時間註釋。當我這樣做時,我收到一個錯誤(數據庫中的某些日期無效,因此我使用變壓器)。看起來我錯誤地用這種方式使用變壓器?是否有解決方案不涉及將無效日期存儲在另一個(只讀)字段(例如字符串)中進行轉換?例如在驗證之前轉換該值? – user1083646