package Ġcom . atar ax ia . gab riel _ vz . persistence Ċ Ċ import Ġcom . fasterxml . jackson . annotation . Json Back Reference Ċ import Ġcom . fasterxml . jackson . annotation . Json Managed Reference Ċ import Ġjava . time . Offset DateTime Ċ import Ġjavax . persistence .* Ċ Ċ @ Entity Ċ @ Table ( name Ġ= Ġ" dis co graphy ") Ċ class ĠDis co graphy Entity ( ĊĠĠĠĠĠĠĠ Ġid : ĠString ? Ġ= Ġnull Ġ, ĊĠĠĠĠĠĠĠ Ġtitle : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġcreated : ĠOffset DateTime Ġ= ĠOffset DateTime . now (), ĊĠĠĠĠĠĠĠ Ġmodified : ĠOffset DateTime Ġ= ĠOffset DateTime . now (), ĊĠĠĠĠĠĠĠ Ġvar Ġlabel : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġvar Ġrecord Id : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġvar Ġdate Of Publishing : ĠString ? Ġ= Ġnull , ĊĊĠĠĠĠĠĠĠ Ġ@ Json Managed Reference ĊĠĠĠĠĠĠĠ Ġ@ ManyToMany ( mapped By Ġ= Ġ" related Dis co graph ies ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfetch Ġ= ĠFetch Type . LA ZY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcascade Ġ= Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCascade Type . PER SIST , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCascade Type . MERGE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCascade Type . REMOVE ]) ĊĠĠĠĠĠĠĠ Ġvar Ġmusic ians : ĠMutable Set < Person Entity >? Ġ= Ġmutable Set Of (), ĊĊĠĠĠĠĠĠĠ Ġ@ Json Back Reference ( value Ġ= Ġ" work - dis co graphy ") ĊĠĠĠĠĠĠĠ Ġ@ ManyToMany ( mapped By Ġ= Ġ" dis co graph ies ") ĊĠĠĠĠĠĠĠ Ġvar Ġrelated Works : ĠMutable Set < Work Entity >? Ġ= Ġmutable Set Of () Ċ Ċ ) Ġ: Ġcom . atar ax ia . gab riel _ vz . root . Entity ( ĊĠĠĠĠĠĠĠ Ġid , ĊĠĠĠĠĠĠĠ Ġtitle , ĊĠĠĠĠĠĠĠ Ġcreated , ĊĠĠĠĠĠĠĠ Ġmodified Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġadd Music ians ( person Entity : ĠPerson Entity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmusic ians ?. add ( person Entity ) ĊĠĠĠĠĠĠĠ Ġperson Entity . related Dis co graph ies ?. add ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Music ians ( person Entity : ĠPerson Entity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmusic ians ?. remove ( person Entity ) ĊĠĠĠĠĠĠĠ Ġperson Entity . related Dis co graph ies ?. remove ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ! is ĠDis co graphy Entity ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ(! super . equals ( other )) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġif Ġ( label Ġ!= Ġother . label ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( record Id Ġ!= Ġother . record Id ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( date Of Publishing Ġ!= Ġother . date Of Publishing ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( music ians Ġ!= Ġother . music ians ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( related Works Ġ!= Ġother . related Works ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġsuper . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġ( label ?. hashCode () Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġ( record Id ?. hashCode () Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġ( date Of Publishing ?. hashCode () Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġ( music ians ?. hashCode () Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġ( related Works ?. hashCode () Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ