package Ġxyz . t cre op arg h . amt td _ web . entity Ċ Ċ import Ġorg . hibernate . annotations . Type Ċ import Ġxyz . t cre op arg h . amt td _ web . common . data . I User Ċ import Ġjava . util .* Ċ import Ġjavax . persistence .* Ċ Ċ /** Ċ Ġ* Ġ@ author ĠT Cre op arg h Ċ Ġ* Ċ Ġ* ĠA Ġplain , Ġold Ġuser . Ċ Ġ* Ċ Ġ* ĠUUID Ġis Ġused Ġto Ġuniquely Ġidentify Ġan Ġuser , Ġbut ĠEmail Ġis Ġalso Ġunique . Ċ Ġ* Ċ Ġ* ĠUser Ġnames Ġcan Ġduplicate Ġacross Ġusers . Ċ Ġ*/ Ċ @ Entity Ċ @ Table ( ĊĠĠĠ Ġname Ġ= Ġ" user ", Ġindexes Ġ= Ġ[ ĊĠĠĠĠĠĠĠ ĠIndex ( name Ġ= Ġ" id _ index ", Ġcolumn List Ġ= Ġ" user _ uuid ", Ġunique Ġ= Ġtrue ), ĊĠĠĠĠĠĠĠ ĠIndex ( name Ġ= Ġ" email _ index ", Ġcolumn List Ġ= Ġ" email _ address ", Ġunique Ġ= Ġtrue ) ĊĠĠĠ Ġ] Ċ ) Ċ data Ġclass ĠEntity User ( ĊĊĠĠĠ Ġvar Ġname : ĠString ? Ġ= Ġnull , ĊĊĠĠĠ Ġ@ Column ( unique Ġ= Ġtrue , Ġcolumn Definition Ġ= Ġ" varchar ( 8 0 )", Ġname Ġ= Ġ" email _ address ") ĊĠĠĠ Ġvar Ġemail Address : ĠString ? Ġ= Ġnull , ĊĊĠĠĠ Ġvar Ġpassword : ĠString ? Ġ= Ġnull , ĊĊĠĠĠ Ġ@ Id ĊĠĠĠ Ġ@ Column ( ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġ" user _ uuid ", ĊĠĠĠĠĠĠĠ Ġinser table Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġup datable Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġnullable Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġcolumn Definition Ġ= Ġ" varchar ( 6 4 )" ĊĠĠĠ Ġ) ĊĠĠĠ Ġ@ Type ( type Ġ= Ġ" uuid - char ") ĊĠĠĠ Ġoverride Ġvar Ġuuid : ĠUUID Ġ= ĠUUID . randomUUID (), ĊĊĠĠĠ Ġ@ Basic ĊĠĠĠ Ġ@ Temporal ( Temporal Type . TIMESTAMP ) ĊĠĠĠ Ġval Ġtime Created : ĠCalendar Ġ= ĠCalendar . getInstance (), ĊĊĠĠĠ Ġ@ ManyToMany ( cascade Ġ= Ġ[ Cascade Type . ALL ]) ĊĠĠĠ Ġ@ Join Table ( ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġ" user _ in _ work _ group ", ĊĠĠĠĠĠĠĠ Ġjoin Columns Ġ= Ġ[ JoinColumn ( name Ġ= Ġ" user _ uuid ") ], ĊĠĠĠĠĠĠĠ Ġinverse Join Columns Ġ= Ġ[ JoinColumn ( name Ġ= Ġ" groupId ")] ĊĠĠĠ Ġ) ĊĠĠĠ Ġvar Ġjoined Work Groups : ĠMutable Set < Entity Work Group > Ġ= Ġmutable Set Of () Ċ Ċ ) Ġ: ĠI Entity , ĠI User Ġ{ ĊĊĠĠĠ Ġ@ One ToOne ( cascade Ġ= Ġ[ Cascade Type . ALL ], Ġfetch Ġ= ĠFetch Type . LA ZY , Ġoptional Ġ= Ġtrue ) ĊĠĠĠ Ġ@ JoinColumn ( name Ġ= Ġ" avatar _ id ") ĊĠĠĠ Ġvar Ġavatar : ĠEntity User Avatar ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġval Ġusername : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġname . toString () ĊĠĠĠ Ġoverride Ġval Ġemail : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġemail Address . toString () ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ= Ġthis . uuid Ġ== Ġ( other Ġas ? ĠEntity User )?. uuid ĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ= Ġuuid . hashCode () Ċ } Ċ