๐ฑ ๋ฌธ์ ์ํฉ
- Bid ์ํฐํฐ๋ ๋๊ด์ ๋ฝ์ ์ํด @Version ํ๋๋ฅผ ์ฌ์ฉ ์ค์ด๋ค.
- @SQLDelete ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํด Soft Delete๋ฅผ ํ๊ณ ์๋ค.
- Bid ์ํฐํฐ๋ฅผ ์ญ์ ํ๋ ค๊ณ ํ ๋ ๋ค์๊ณผ ๊ฐ์ SQL ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
could not delete: [core.domain.bid.Bid]; SQL [UPDATE bid SET is_deleted = 1 WHERE id = ?]
SQL Error: 90008, SQLState: 90008
Invalid value "2" for parameter "parameterIndex" [90008-214]
o.h.engine.jdbc.spi.SqlExceptionHelper : Invalid value "2" for parameter "parameterIndex"
๐ฑ ๋ฌธ์ ์์ธ
Hibernate๋ @Version ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋๊ด์ ๋ฝ ๊ตฌํ ์ SQL ์ ๋ฐ์ดํธ ์ฟผ๋ฆฌ์ ๋ฒ์ ๋ฒํธ๋ฅผ ํฌํจํ๋ค. ํ์ง๋ง ๊ธฐ์กด์ ์ค์ ํ๋ ์ปค์คํ SQL ๊ตฌ๋ฌธ์ id๋ง์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์๋ค์ด๋ ์ค์ด๋ค.
๋ฐ๋ผ์ @Version ํ๋์ @SQLDelete ์ด๋ ธํ ์ด์ ์ ํจ๊ป ์ฌ์ฉํ ๊ฒฝ์ฐ ๊ธฐ์กด์ ์ปค์คํ SQL ๊ตฌ๋ฌธ๊ณผ ์ถฉ๋์ด ๋ฐ์ํ๋ ๊ฒ์ด๋ค.
๐ฑ ํด๊ฒฐ ๋ฐฉ๋ฒ
@SQLDelete ์ด๋ ธํ ์ด์ ์ SQL ๊ตฌ๋ฌธ ์์
@Version ํ๋๋ฅผ SQL ๊ตฌ๋ฌธ์ ํฌํจํ๋๋ก @SQLDelete ์ด๋ ธํ ์ด์ ์ ์์ ํ๋ค.
@SQLDelete(sql = "UPDATE bid SET is_deleted = true WHERE id = ? AND version = ?")
@Where(clause = "is_deleted = false")
@Entity
public class Bid extends BaseTimeEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
...
@Version
private Long version;
private Boolean isDeleted;
}