Аудит свойства SortedSet с использованием Javers дает исключение java.lang.ClassCastException - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь проверить свойство SortedSet с помощью Javers, но продолжаю получать приведенное ниже исключение при попытке выполнить коммит.

java.lang.ClassCastException: org.javers.core.metamodel.object.InstanceId cannot be cast to java.lang.Comparable
at java.util.TreeMap.compare(TreeMap.java:1188)
at java.util.TreeMap.put(TreeMap.java:531)
at java.util.TreeSet.add(TreeSet.java:255)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:82)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:60)
at com.google.gson.Gson.fromJson(Gson.java:803)

Этого не происходит, когда я пытаюсь выполнить аудит свойстватипа Set вместо SortedSet.(Также, класс Animal реализует Comparable и метод compareTo ()). Любая помощь приветствуется.Спасибо.

1 Ответ

0 голосов
/ 19 октября 2018

Базовый (то есть несортированный) Set просто содержит элементы.A SortedSet применяет порядок к этим элементам, и вы должны каким-то образом указать порядок.Например, гарантируя, что элементы реализуют интерфейс Comparable (для естественного упорядочения) или предоставляя Comparator .

В вашем случае похоже, что для сравнения сортировки требуется сравнение InstanceIds.(Либо потому, что вы добавляете их непосредственно в набор, либо добавляемые элементы имеют InstanceIds.) Поскольку InstanceId не реализует Comparable, вы получаете ошибку.

(Если вы предоставите немного больше своего кода, например, создание набора и добавление к нему, может быть более понятно, в чем причина вашей ошибки.)

...