package Ġcom . service . employee . repository Ċ Ċ import Ġcom . service . employee . model . Employee Ċ import Ġio . mic ronaut . configuration . hibernate . jpa . scope . Current Session Ċ import Ġio . mic ronaut . spring . tx . annotation . Transactional Ċ import Ġjavax . inject . Singleton Ċ import Ġjavax . persistence . EntityManager Ċ import Ġjavax . persistence . Persistence Context Ċ Ċ @ Singleton Ċ open Ġclass ĠEmployee Repository ( ĊĠĠĠĠĠĠĠ Ġ@ param : Current Session Ġ@ field : Persistence Context Ġval Ġentity Manager : ĠEntity Manager Ċ ) Ġ{ ĊĠĠĠ Ġ@ Transactional ĊĠĠĠ Ġopen Ġfun Ġadd ( employee : ĠEmployee ): ĠEmployee Ġ{ ĊĠĠĠĠĠĠĠ Ġentity Manager . persist ( employee ) ĊĠĠĠĠĠĠĠ Ġreturn Ġemployee ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Transactional ( readOnly Ġ= Ġtrue ) ĊĠĠĠ Ġopen Ġfun Ġfind ById ( id : ĠLong ): ĠEmployee Ġ= Ġentity Manager . find ( Employee :: class . java , Ġid ) ĊĊĠĠĠ Ġ@ Transactional ( readOnly Ġ= Ġtrue ) ĊĠĠĠ Ġopen Ġfun ĠfindAll (): ĠList < Employee > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentity Manager . createQuery (" SELECT Ġe ĠFROM ĠEmployee Ġe "). result List Ġas ĠList < Employee > ĊĊĠĠĠ Ġ@ Transactional ( readOnly Ġ= Ġtrue ) ĊĠĠĠ Ġopen Ġfun ĠfindBy Department ( department Id : ĠLong ): ĠList < Employee > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentity Manager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. createQuery (" SELECT Ġe ĠFROM ĠEmployee Ġe ĠWHERE Ġe . department Id Ġ= Ġ: dep Id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setParameter (" dep Id ", Ġdepartment Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. result List Ġas ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠList < Employee > ĊĊĠĠĠ Ġ@ Transactional ( readOnly Ġ= Ġtrue ) ĊĠĠĠ Ġopen Ġfun ĠfindBy Organization ( organization Id : ĠLong ): ĠList < Employee > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentity Manager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. createQuery (" SELECT Ġe ĠFROM ĠEmployee Ġe ĠWHERE Ġe . organization Id Ġ= Ġ: org Id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setParameter (" org Id ", Ġorganization Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. result List Ġas ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠList < Employee > Ċ } Ċ