Проблема с TreeSet и Hibernate - Нельзя привести к java .lang.Comparable - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь извлечь элементы из БД, и по какой-то причине гибернация и древовидная структура достигают исключения.

У меня есть сущность "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: я не хочу менять его на список хэш-набора, я хочу, чтобы он работал с использованием набора деревьев.

...