package Ġio . github . deb op . spring data . jpa . mapping . tree Ċ Ċ import Ġio . github . deb op . spring data . jpa . entities . Abstract Jpa Tree Entity Ċ import Ġorg . hibernate . annotations . Dynamic Insert Ċ import Ġorg . hibernate . annotations . Dynamic Update Ċ import Ġorg . springframework . data . jpa . repository . Jpa Repository Ċ import Ġorg . springframework . data . jpa . repository . Query Ċ import Ġjavax . persistence . Entity Ċ import Ġjavax . persistence . GeneratedValue Ċ import Ġjavax . persistence . Generation Type Ċ import Ġjavax . persistence . Id Ċ import Ġjavax . persistence . Index Ċ import Ġjavax . persistence . Table Ċ Ċ interface ĠTreeNode Repository Ġ: ĠJ pa Repository < TreeNode , ĠLong > Ġ{ ĊĊĠĠĠ Ġ@ Query (" select Ġn Ġfrom Ġtree _ t reen ode Ġn Ġwhere Ġn . parent Ġis Ġnull ") ĊĠĠĠ Ġfun ĠfindAll Root (): ĠList < TreeNode > Ċ Ċ } Ċ Ċ @ Entity ( name Ġ= Ġ" tree _ t reen ode ") Ċ @ Table ( indexes Ġ= Ġ[ Index ( name Ġ= Ġ" ix _ tree _ t reen ode _ parent ", Ġcolumn List Ġ= Ġ" parent _ id ") ]) Ċ @ Dynamic Insert Ċ @ Dynamic Update Ċ data Ġclass ĠTreeNode ( ĊĠĠĠ Ġ@ Id ĊĠĠĠ Ġ@ GeneratedValue ( strategy Ġ= ĠGeneration Type . IDENTITY ) ĊĠĠĠ Ġvar Ġid : ĠLong ? Ġ= Ġnull , ĊĠĠĠ Ġvar Ġtitle : ĠString Ċ ) Ġ: ĠAbstract Jpa Tree Entity < TreeNode >() Ġ{ ĊĊĠĠĠ Ġvar Ġdescription : ĠString ? Ġ= Ġnull Ċ }