package Ġnet . tim afe . ang kor . domain Ċ Ċ import Ġjava . util .* Ċ import Ġjavax . persistence . Id Ċ import Ġjavax . persistence . Mapped Super class Ċ Ċ @ Mapped Super class Ċ abstract Ġclass ĠAbstract Base Entity ( ĊĠĠĠ Ġ// Ġneeds Ġ" open " Ġor Ġwe Ġget : ĠGetter Ġmethods Ġof Ġlazy Ġclasses Ġcannot Ġbe Ġfinal ĊĠĠĠ Ġ@ Id ĊĠĠĠ Ġopen Ġvar Ġid : ĠUUID Ġ= ĠUUID . randomUUID (), Ġ// Ġgiven Id Ġ?: ĠUUID . randomUUID () Ċ ) Ġ{ ĊĊĠĠĠ Ġ// ĠUsing Ġid Ġfor Ġequals Ġand Ġhash code Ġis Ġsafe Ġhere Ġsince Ġwe Ġcontrol Ġthe ĠUUID , ĊĠĠĠ Ġ// Ġso Ġit 's Ġinitialized Ġby Ġthe Ġentity Ġbefore Ġit Ġis Ġpersisted , Ġand Ġdoesn 't Ġchange Ġafter Ġpersist ĊĠĠĠ Ġ// ĠIn sp ired Ġby : Ġhttps :// j iv im berg . io / blog / 2 0 1 8 / 1 1 / 0 5 / using - uuid - on - spring - data - jpa - entities / ĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ= Ġid . hashCode () ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ġ=== Ġother Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġother Ġ== Ġnull Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġother Ġ! is ĠAbstract Base Entity Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġid Ġ== Ġother . id ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġ"${ this :: class . simple Name } {" Ġ+ Ġ" id ='" Ġ+ Ġid Ġ+ Ġ'\'' Ġ+ Ġ" }" Ċ } Ċ