2017-12-15 3 views
0

Die folgende Aufzählung von einem Domänenmodellklasse gegeben:Hibernate & PPV 2.1 - Abbildung java.time.LocalDateTime als Schlüssel in java.util.Map

public enum OperationMode { 
    BATTERY_CHANGE_MODE, 
    PBP_MODE 
} 

I definiert auch eine AttributeConverter zwischen Local zu konvertieren und Timestamp

@Converter 
public class LocalDateTimeAttributeConverter implements AttributeConverter<LocalDateTime, Timestamp> { 

    @Override 
    public Timestamp convertToDatabaseColumn(LocalDateTime locDateTime) { 
     return (locDateTime == null ? null : Timestamp.valueOf(locDateTime)); 
    } 

    @Override 
    public LocalDateTime convertToEntityAttribute(Timestamp sqlTimestamp) { 
     return (sqlTimestamp == null ? null : sqlTimestamp.toLocalDateTime()); 
    } 
} 

In einer Entity-Klasse-I benötigen eine Arbeitszuordnung für java.utitl.Map als Element Sammlung zu definieren:

@ElementCollection 
@MapKeyColumn(name = "time") 
@Convert(converter = LocalDateTimeAttributeConverter.class) 
// some annotations are missing here... 
private Map<LocalDateTime, OperationMode> operationHistory; 

Was ist die empfohlene Methode, um das zu erreichen?

Antwort

0

Die Lösung ist die folgende Abbildung:

@ElementCollection 
@MapKeyColumn(name = "time") 
@Convert(converter = LocalDateTimeAttributeConverter.class, attributeName = "key") 
@Enumerated(EnumType.STRING) 
private Map<LocalDateTime, OperationMode> operationHistory; 

attribute'Schlüssel' fehlte.

Verwandte Themen