package Ġio . lex cao . book store . domain . payment . validation Ċ Ċ import Ġio . lex cao . book store . application . payment . dto . Set tlement Ċ import Ġio . lex cao . book store . domain . payment . Stock p ile Service Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . validation . Constraint Validator Ċ import Ġjavax . validation . Constraint Validator Context Ċ Ċ /** Ċ Ġ* Ġ ç»ĵ ç®Ĺ åįķ éªĮè¯ģ åĻ¨ Ċ Ġ* Ċ Ġ* Ċ Ġ* Ġ ç»ĵ ç®Ĺ åįķ èĥ½å¤Ł æĪĲåĬŁ æī§è¡Į çļĦ çº¦ æĿŁ æĺ¯ æ¸ħ åįķ ä¸Ń æ¯ı ä¸Ģ é¡¹ åķĨåĵģ çļĦ åºĵ åŃĺ éĩı éĥ½ è¶³ å¤Ł ãĢĤ Ċ Ġ* Ċ Ġ* Ċ Ġ* Ġ è¿Ļä¸ª éªĮè¯ģ åĻ¨ çļĦ çĽ®çļĦ ä¸į åľ¨ äºİ ä¿Ŀè¯ģ åķĨåĵģ é«ĺ å¹¶ åıĳ æĥħåĨµ ï¼Ī å¦Ĥ ç§Ĵ æĿĢ æ´»åĬ¨ ï¼ī ä¸ĭ ä¸į è¶ħ åįĸ ï¼Į èĢĮ åľ¨ äºİ éģ¿åħį åºĵ åŃĺ ä¸į è¶³ æĹ¶ ä»į åı¯ ä¸ĭ åįķ ãĢĤ é«ĺ å¹¶ åıĳ ä¸ĭçļĦ è¶ħ åįĸ æĺ¯ ä¸Ģç§į âĢľ ä¸įåı¯ éĩįå¤į è¯» âĢĿ çİ° è±¡ Ċ Ġ* Ġï¼Ī åį³ è¯»åıĸ è¿ĩ çļĦæķ°æį® åľ¨ äºĭåĬ¡ æľŁ éĹ´ è¢« åı¦ ä¸Ģä¸ª äºĭåĬ¡ æĶ¹åıĺ ï¼īï¼Į å¦Ĥ è¦ģ ä¸¥ è° ¨ åľ° éģ¿åħį ï¼Į éľĢè¦ģ æĬĬ æķ°æį®åºĵ çļĦ éļĶ ç¦» çº§åĪ« ä»İ é»ĺè®¤ çļĦ âĢľ Read ĠCom mitted âĢĿ æıĲ åįĩ èĩ³ âĢľ Repeat able ĠRead âĢĿ Ċ Ġ* Ġ éĻ¤äºĨ MySQL ï¼Ī InnoDB ï¼ī å¤ĸ ï¼Į ä¸» æµģ çļĦ æķ°æį®åºĵ ï¼Į å¦Ĥ Oracle ãĢģ SQL Server é»ĺè®¤ éĥ½æĺ¯ Read Ġcommitted ï¼Į æıĲ åįĩ éļĶ ç¦» çº§åĪ« ä¼ļ æĺ¾ èĳĹ å½±åĵį æķ°æį®åºĵ çļĦ å¹¶ åıĳ èĥ½åĬĽ ãĢĤ Ċ Ġ*/ Ċ class ĠSet tlement Validator Ġ: ĠConstraint Validator < S ufficient Stock , ĠSet tlement > Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġservice : ĠStock p ile Service ĊĊĠĠĠ Ġoverride Ġfun ĠisValid ( value : ĠSet tlement , Ġcontext : ĠConstraint Validator Context ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue . items . none Ġ{ Ġservice . getBy ProductId ( it . productId ). amount Ġ< Ġit . amount Ġ} ĊĠĠĠ Ġ} Ċ } Ċ