2017-08-24 1 views
0

J'ai cette classepersist classe personnalisée dans la base de données, les règles de sérialisation personnalisées

public class Money { 
    private BigDecimal amount; 
    private String currency; 
} 

Je voudrais, en créant un serializator personnalisé ou des moyens similaires, de dire mise en veille prolongée persister la classe Money comme String de cette façon: 23.00 EUR

Fondamentalement, la sérialisation sera amount arrondi avec 2 décimales + espace + currency et le désérialisation suivra la logique inverse.

Il ne devrait pas être difficile à mettre en œuvre, mais je n'ai pas pu trouver d'indices. Des idées comment faire cela?

Répondre

1

Prêt à l'emploi: AttributeConverter

import javax.persistence.AttributeConverter; 


@Converter(autoApply = true) 
public class MoneyAttributeConverter implements AttributeConverter<Money, String> { 

    @Override 
    public String convertToDatabaseColumn(Money in) { 
     return ... convert here; 
    } 

    @Override 
    public Money convertToEntityAttribute(String in) { 
     return ... and here; 
    } 
} 

espoir helpul :)

EDIT. Notez sur la marge, la sérialisation est «similaire» à la persistance, mais pas la même chose. Google dans le net "différences entre @Transient annotation et transient mot-clé"

+0

Exactement ce que je cherchais. Je connais la différence, merci :) – Manza