Wie konvertiere ich eine Java-Enum-Konstante in ihre für Menschen lesbare Beschreibungszeichenfolge?Java

Java-Forum
Anonymous
 Wie konvertiere ich eine Java-Enum-Konstante in ihre für Menschen lesbare Beschreibungszeichenfolge?

Post by Anonymous »

Ich habe Java-Enumerationen mit einem Beschreibungsfeld, das ich anstelle des Enum-Konstantennamens in der Datenbank beibehalten möchte.
Zum Beispiel:

Code: Select all

public enum CommitteeType {
AUDIT_COMMITTEE("audit committee"),
EXECUTIVE_COMMITTEE("executive committee");

private final String description;

CommitteeType(String description) {
this.description = description;
}

public String getDescription() {
return description;
}

public static CommitteeType fromDescription(String desc) {
for (CommitteeType type : values()) {
if (type.description.equals(desc)) {
return type;
}
}
throw new IllegalArgumentException("Invalid description: " + desc);
}
}
Ich habe einen AttributeConverter implementiert:

Code: Select all

@Converter
public class CommitteeTypeConverter implements AttributeConverter {

@Override
public String convertToDatabaseColumn(CommitteeType committeeType) {
if (committeeType == null) {
return null;
}
return committeeType.getDescription();
}

@Override
public CommitteeType convertToEntityAttribute(String s) {
if (s == null) {
return null;
}
return CommitteeType.fromDescription(s);
}
}
Und meine Entität:

Code: Select all

@Entity
public class MyEntity {
@Id
private Long id;

@Convert(converter = CommitteeTypeConverter.class)
private CommitteeType committeeType;
}
Das Problem:
Wenn ich von DTO zu Entity zuordne, wird die Aufzählung korrekt zugewiesen, aber JPA speichert den Namen der Aufzählungskonstante (

Code: Select all

AUDIT_COMMITTEE
) zur Datenbank anstelle der Beschreibung (

Code: Select all

"audit committee"
).
Der Konverter scheint nicht ausgelöst zu werden. Was übersehe ich?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post