2011-12-06 6 views
0

J'ai ce code: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) { 

    } 

} 

Ma question est, comment puis-je obtenir la valeur de transformer (de la colonne foo) à l'intérieur de buildAttributeVaule? Ce n'est pas à l'intérieur du tableau d'enregistrement.

Répondre

0

Vérifiez d'abord que le code SQL généré est lu dans la colonne "foo" en activant la journalisation. Si c'est le cas, vérifiez que la base de données retourne "foo" et non "FOO" - java est sensible à la casse sur les recherches de chaînes. Il se pourrait que "FOO" soit dans le dossier au lieu de "foo".

+0

Merci pour cela, il semble ne pas se demander pour le champ dans la requête le sélectionner génère. Je pense que c'est parce que je ne spécifie pas d'annotation temporelle pour le champ de date. Quand je le fais, je reçois une erreur (certaines dates dans la base de données ne sont pas valides, donc pourquoi j'utilise un transformateur). Il semble que je me suis trompé d'utiliser un transformateur de cette façon? Existe-t-il une solution qui n'implique pas le stockage de la date non valide dans un autre champ (en lecture seule) (par exemple une chaîne) pour la conversion? par exemple. transformer la valeur avant qu'elle ne soit validée? – user1083646