Ich habe diese Tabellerekursive Abfrage mit HQL
CREATE TABLE IF NOT EXISTS `branch` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`studcount` int(11) DEFAULT NULL,
`username` varchar(64) NOT NULL,
`branch_fk` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FKADAF25A2A445F1AF` (`branch_fk`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=14 ;
ALTER TABLE `branch`
ADD CONSTRAINT `FKADAF25A24CEE7BFF` FOREIGN KEY (`login_fk`) REFERENCES `login` (`id`);
wie Sie jede Tabelle einen Fremdschlüssel hat sehen können, die auf andere Zweig Row (Selbst Relation) zeigen Ich möchte eine Abfrage HQL mit (bevorzugen HQL) zu Erhalte einen Benutzernamen (oder eine ID) von mir und gebe eine List<String>
(für Benutzername) oder List<Integer>
(für ID) zurück, die eine Liste aller meiner subBranch war;
lassen Sie mich in Beispiel zeigen
id studentcount username branch_fk
1 312 user01 NULL
2 111 user02 1
3 432 user03 1
4 543 user04 2
5 433 user05 3
6 312 user06 5
7 312 user06 2
8 312 user06 7
, wenn ich rufe GetSubBranch (3) Ich zurückkehren wollen:
5, 6
und wenn Anruf GetSubBranch (2) I zurückkehren wollen:
4, 7, 8
Ich handle es durch schreiben rekursive Fuction, die HQL-Abfrage aufrufen – Am1rr3zA
Tatsächlich gibt es eine (Standard) Möglichkeit, in der die meisten großen Datenbanken ausdrücken können dies in SQL: rekursive allgemeine Tabellenausdrücke. MySQL ist einer der wenigen, die dies nicht unterstützen. –