2017-08-24 2 views
0

ich diese KlassePersist benutzerdefinierte Klasse in die Datenbank, benutzerdefinierte Serialisierung Regeln

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

Ich möchte, indem Sie eine benutzerdefinierte serializator oder ähnliche Weise erstellen, zu sagen, überwintern beharren die Money Klasse als String auf diese Weise haben: 23.00 EUR

Grundsätzlich wird die Serialisierung amount mit 2 Nachkommastellen gerundet + Raum sein + currency und die Deserialisierung wird die inverse Logik folgen.

Es sollte nicht schwierig zu implementieren sein, aber ich konnte keine Hinweise finden. Irgendwelche Ideen, wie man das macht?

Antwort

1

Ready to go: 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; 
    } 
} 

Hoffnung helpul :)

EDIT. Anmerkung zum Rand: Die Serialisierung ist der Persistenz "ähnlich", aber nicht dieselbe. Google im Netz "Unterschiede zwischen @Transient Annotation und transient Stichwort"

+0

Exaclty, was ich gesucht habe. Ich kenne den Unterschied, danke :) – Manza

Verwandte Themen