Я пытаюсь извлечь элементы из БД, и по какой-то причине гибернация и древовидная структура достигают исключения.
У меня есть сущность "Ticket" с набором деревьев "Pendencia".
Билет:
@Entity
@Table(name = "TICKET")
public class Ticket {
.
.
.
@OrderBy("id")
@ManyToMany(fetch = FetchType.EAGER, cascade=CascadeType.ALL)
@JoinTable(name = "TICKET_PENDENCIA", joinColumns = {@JoinColumn(name = "ID_TICKET", nullable = true) },
inverseJoinColumns = { @JoinColumn(name = "ID_PENDENCIA", nullable = true)})
private SortedSet<Pendencia> pendencias = new TreeSet<Pendencia>(new ComparatorPendencias());
Pendencia:
@Entity
@Table(name = "PENDENCIA")
public class Pendencia implements Comparator<Pendencia> {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String nome;
boolean checked;
public Pendencia() {
super();
}
public long getId() {
return id;
}
public Pendencia(String nome) {
super();
this.nome = nome;
}
public void setId(long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public boolean isChecked() {
return checked;
}
public void setChecked(boolean checked) {
this.checked = checked;
}
@Override
public int compare(Pendencia o1, Pendencia o2) {
return Long.compare(o1.getId(), o2.getId());
}
}
Когда я пытаюсь загрузить из базы данных с помощью обычной пружины jpa, найдите все:
@GetMapping("/tickets")
public List<Ticket> getAllTickets() {
List<Ticket> tickets = ticketRepository.findAll();
Затем выдается ошибка:
java.lang.ClassCastException: com.br.tcc.workflowtrouble2020.model.Pendencia cannot be cast to java.lang.Comparable
at java.util.TreeMap.compare(TreeMap.java:1294) ~[na:1.8.0_191]
at java.util.TreeMap.put(TreeMap.java:538) ~[na:1.8.0_191]
Pendencia уже реализует взаимодействие компараторов и сравнение методов. Что мне не хватает?
Obs: я не хочу менять его на список хэш-набора, я хочу, чтобы он работал с использованием набора деревьев.