2016-12-23 2 views
0

データベースに列挙型を保存しますが、名前ではなく値のみを保存します。たとえば私はCODE_3とオブジェクトを保存するので、私のデータベースでActCode : "3"でなければならず、ActCode : "CODE_3"でなければなりません。しかし、私がオブジェクトを見つけると、それはActCode.CODE_3として返され、String "3"としてではありません。Spring - Neo4jデータベース:列挙型の列をデータベースに保存して列挙型として返します

私はこのような列挙型があります。これは私のクラスである

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); 

I私のデータベースを見て、これは結果です: enter image description here

私も、これは私がSpring 4.3.3.RELEASEHibernate 5.0.11.FinalSDN4.1.3-RELEASEを使用してneo4j-ogm-2.0.5てる私reference

で、コンバータを使用しようとしました。

答えて

0

現在、@Convertを使用している場合、OGMには現在のところ無効にすることのできないデフォルトのコンバータがあるため、java.util.Enumのコンバータは適用されません。

何かを稼働させる必要がある場合は、ActCode@NodeEntityとし、データベース自体の列挙型に同じ値を作成することができます。

これは完璧ではありませんが、少なくともこの機能が追加されるまで問題を解決します。その間、カスタムコンバータを列挙型で動作させるために、Neo4j OGM Githubを使用して強化要求を行うことができます。

また、FYI:Neo4j-OGMおよびSpring Data Neo4Jでは、@EnumeratedなどのJPAアノテーションはサポートされていません。