2016-06-27 8 views
1

私はgreendaoジェネレータを使用して、私のモデルを生成しようとしていると私は私がする必要がある場合addToManyが、何を使ってList<Model>を追加する方法を知っているList<String>greendaoジェネレータにList <String>プロパティを追加するにはどうすればよいですか?

を受け入れるプロパティを追加するかどうかは非常にわからないんだけど私のモデルの中にArrayListを保管していますか?このような

何か:

Entity tags = schema.addEntity("Tags"); 
    tags.implementsInterface("android.os.Parcelable"); 
    tags.addLongProperty("tagId").primaryKey().autoincrement(); 
    tags.addLongProperty("date"); 
    tags.addArrayStringProperty("array"); // something like this 

私は、配列のすべての値を保存するために別のエンティティを作成を考えていた、そしてあなたがそれのArrayListをシリアル化することができますToMany

このような
Entity myArray = schema.addEntity("MyArray"); 
    myArray.implementsInterface("android.os.Parcelable"); 
    myArray.addLongProperty("myArrayId").primaryKey().autoincrement(); 
    myArray.addLongProperty("id").notNull().getProperty(); 
    Property tagId = myArray.addLongProperty("tagId").getProperty(); 

ToMany tagToMyArray = tag.addToMany(myArray, tagId); 
tagToMyArray.setName("tags"); 
myArray.addToOne(tag, tagId); 

答えて

4

を行うと、 greenDAOテーブルに文字列プロパティとして保存します。

String arrayString = new Gson().toJson(yourArrayList); 

、その後、別のway.Youが@convertアノテーションを使用することができ、この

Type listType = new TypeToken<ArrayList<String>>(){}.getType(); 
List<String> arrayList = new Gson().fromJson(stringFromDb, listType) 
+0

このような簡単な回答 – Haroon

2

のようにそれをバック取り出します。

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

@Convert(converter = RoleConverter.class, columnType = Integer.class) 
private Role role; 

public enum Role { 
    DEFAULT(0), AUTHOR(1), ADMIN(2); 

    final int id; 

    Role(int id) { 
     this.id = id; 
    } 
} 

public static class RoleConverter implements PropertyConverter<Role, Integer> { 
    @Override 
    public Role convertToEntityProperty(Integer databaseValue) { 
     if (databaseValue == null) { 
      return null; 
     } 
     for (Role role : Role.values()) { 
      if (role.id == databaseValue) { 
       return role; 
      } 
     } 
     return Role.DEFAULT; 
    } 

    @Override 
    public Integer convertToDatabaseValue(Role entityProperty) { 
     return entityProperty == null ? null : entityProperty.id; 
    } 
} 
} 
関連する問題