2016-12-23 2 views
0

Я хочу сохранить Enum в моей базе данных, но только значение, а не имя. Например, я сохраняю объект с CODE_3, поэтому в моей базе данных должно быть ActCode : "3", а не ActCode : "CODE_3". Но когда я нахожу объект, он должен быть возвращен как ActCode.CODE_3, а не как String "3".Spring - база данных Neo4j: сохранить строку Enum в базу данных и вернуть ее как Enum

У меня есть Enum, как это:

public enum ActCode { 

     CODE_3("3"), 
     CODE_4("4"), 
     CODE_6("6"), 
     CODE_7("7"), 
     CODE_12("12"), 
     CODE_13("13"), 
     CODE_14("14"), 
     CODE_15("15"), 
     CODE_16("16"), 
     CODE_17("17"), 
     CODE_18("18"), 
     CODE_19("19"), 
     CODE_20("20"), 
     CODE_23("23") 

     private String value; 

     private ActCode(String value) { 
      this.value = value; 
     } 

     @Override 
     public String toString() { 
      return this.value; 
     } 
} 

Это мой класс:

@NodeEntity 
public class TestEnum { 

    @GraphId 
    Long graphId; 

    String id; 

    String name; 

    @Enumerated(EnumType.STRING) 
    ActCode actCode; 

} 

Это, как я сохраняю мой класс в моей службы:

TestEnum test = new TestEnum("Enum 1",ActCode.CODE_3); 
testEnumRepository.save(test); 

Когда я посмотрите на мою базу данных, это результат: enter image description here

Я также пытался использовать конвертер, это мой reference

Я использую Spring 4.3.3.RELEASE, Hibernate 5.0.11.Final, SDN4.1.3-RELEASE и neo4j-ogm-2.0.5.

ответ

0

В настоящее время с использованием @Convert преобразователь не применяется к java.util.Enum, так как у OGM есть преобразователь по умолчанию, который в настоящий момент не может быть переопределен.

Если вам нужно что-то сделать, вы можете сделать ActCode a @NodeEntity и построить те же значения для перечисления в самой базе данных.

Это не идеально, но по крайней мере решит проблему до тех пор, пока эта функциональность не будет добавлена. В то же время вы можете повысить запрос на повышение с помощью Neo4j OGM Github, чтобы пользовательские преобразователи могли работать с перечислениями.

Также FYI: Neo4j-OGM и данные Spring Neo4J не поддерживают аннотации JPA, такие как @Enumerated.

 Смежные вопросы

  • Нет связанных вопросов^_^