Почему JDO Class нарушает индекс MultiWap в Guava? - PullRequest
0 голосов
/ 26 августа 2011

Я не могу создать многостраничный индекс с классом JDO Score ниже.Если я заменю Object [] на Score, все будет работать нормально.Я думал, что проблема была в том, что класс Score не был сериализуем?Чего мне не хватает в классе очков?

Класс очков:

@PersistenceCapable(identityType=IdentityType.APPLICATION, detachable="true")
@javax.jdo.annotations.Version(strategy=VersionStrategy.VERSION_NUMBER,column="VERSION",
     extensions={@Extension(vendorName="datanucleus", key="field-name",value="version")})

public class Score implements Serializable {

  private static final long serialVersionUID = -8805789255398748271L;

  @PrimaryKey
  @Persistent(primaryKey="true", valueStrategy=IdGeneratorStrategy.IDENTITY)
  private Key id;

  private Long version;

  @Persistent
  private String uid;

  @Persistent
  private Integer value;
}

Индекс мультикарты:

List<Score> rows = new ArrayList(scores);
Multimap<Key, Score> grouped = Multimaps.index(rows,
  new Function<Score, Key>() {

    public Key apply(Score item) {
      return (Key) item.getObjKey();
    }
});

1 Ответ

3 голосов
/ 26 августа 2011

Прежде всего, если вы собираетесь использовать Guava, вам, вероятно, следует использовать реальный выпуск Guava, а не код, перепакованный для внутреннего использования в движке приложения.

Тем не менее, похоже, что (при условии, что перепакованный код работает так же, как текущий выпущенный код Guava), по крайней мере, один из ваших Score объектов 'getObjKey() метод должен возвращать null. ImmutableMultimap s не разрешают null ключи или значения.

...