Мне немного любопытно, есть ли способ получить результат подключения по sql-запросу, например root Entity с уже отображенными потомками. Так что, если я вставить в базе что-то вроде этого:Как получить корень из рекурсивного запроса оракула в Hibernate
insert into table test (id, parent_id, some_text) values
(1, null, 'a'),
(2, 1, 'b'),
(3, 1, 'c'),
(4, 2, 'd');
затем по SQL запроса
select *
from test t
start with t.id = 1
connect by prior t.id = t.parent_id
order siblings by t.some_text
я получить
id | parent_id | some_text
1 null a
2 1 b
4 2 d
3 1 c
и лица
@Entity
@Table(name = "test")
public class Test {
@Id
@Column(name = "id")
@GeneratedValue(generator = "increment")
@GenericGenerator(name = "increment", strategy = "increment")
private BigInteger id;
@Column(name = "parent_id")
private BigInteger parent_id;
@Column(name = "some_text")
private String someText;
@OneToMany(mappedBy = "parent")
private Set<Test> descendants;
@ManyToOne
@JoinColumn(name = "parent_id")
private Test parent;
// getters and setters
}
будет ba ck мне как списку теста. Можно получить корневое и полное дерево рекурсивной функцией, но он получит новый запрос на итерации (он будет очень длинным, если у меня будет большое дерево). Итак, есть ли хороший способ получить корень этого дерева с уже отображенными потомками по этому запросу (возможно, расширьте/реализуем некоторый класс/интерфейс, который будет обрабатывать отображение из jdbc в сущность)?
thx для вас ответит, но Hibernate это главный момент, и я попытаюсь использовать ваш запрос с addRoot(), если он будет работать, я расскажу здесь. – user2982622