인프런 커뮤니티 질문&답변

jeonjihoon93님의 프로필 이미지
jeonjihoon93

작성한 질문수

재고시스템으로 알아보는 동시성이슈 해결방법

Pessimistic Lock 활용해보기

계속해서 데이터가 줄지 않고 100개로 나옵니다.

작성

·

739

0

OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended

2023-08-02T14:04:15.469+09:00 DEBUG 24388 --- [ main] org.hibernate.SQL : insert into stock (product_id,quantity) values (?,?)

Hibernate: insert into stock (product_id,quantity) values (?,?)

2023-08-02T14:04:15.723+09:00 DEBUG 24388 --- [ main] org.hibernate.SQL : select s1_0.id,s1_0.product_id,s1_0.quantity from stock s1_0 where s1_0.id=?

Hibernate: select s1_0.id,s1_0.product_id,s1_0.quantity from stock s1_0 where s1_0.id=?

2023-08-02T14:04:15.788+09:00 DEBUG 24388 --- [ main] org.hibernate.SQL : select s1_0.id,s1_0.product_id,s1_0.quantity from stock s1_0

Hibernate: select s1_0.id,s1_0.product_id,s1_0.quantity from stock s1_0

2023-08-02T14:04:15.802+09:00 DEBUG 24388 --- [ main] org.hibernate.SQL : delete from stock where id=?

Hibernate: delete from stock where id=?

 


 

org.opentest4j.AssertionFailedError:

Expected :0

Actual :100

 

이유가 뭔지 잘 모르겠습니다. 코드도 아무리 봐도 같습니다 ㅠㅠ

답변 4

2

저도 위와 같이 update 쿼리가 수행되지 않았습니다.
저는 다음과 같이 해결을 했습니다.

코드 쿼리 문에서 적용된 네임드 파라미터를 @Param 으로 명시해 주었더니, update 쿼리가 수행되었습니다.

수정한 코드는 다음과 같습니다.

@Query("select s from Stock s where s.id = :id")
Stock findByIdWithPessimisticLock(@Param("id") Long id);

오 감사합니다 해결했습니다.

0

최상용님의 프로필 이미지
최상용
지식공유자

네 접속은 됐는데 어떤 테스트가 실패하시는걸까요 ?

최상용님의 프로필 이미지
최상용
지식공유자

혹시 docker 로 실행하실 때 mysql port 를 변경하신걸까요 ?
올려주신내용에서 port 만 3306 으로 변경하고 실행하니까 저는 정상적으로 실행이 되서요!

만약에 mysql port 를 변경하신게 의도하신거라면 오류나는 내용을 스크린샷 찍어서 올려주실 수 있으실까요?

0

최상용님의 프로필 이미지
최상용
지식공유자

jeonjihoon93 님 안녕하세요.

올려주신 깃헙링크를 들어가면 404가 뜨는데 주소가 맞을까요 ?

jeonjihoon93님의 프로필 이미지
jeonjihoon93
질문자

수정했습니다. 지금은 될까요?

0

jeonjihoon93님의 프로필 이미지
jeonjihoon93
질문자

https://github.com/wlgnss0912/stock

깃 허브에 올려서 공유 합니다.

jeonjihoon93님의 프로필 이미지
jeonjihoon93

작성한 질문수

질문하기