Back-end/TroubleShooting
λκ΄μ λ½μ μ¬μ©ν μν°ν°μ soft delete
μμ±λ¦¬
2024. 6. 25. 17:46
π± λ¬Έμ μν©
- 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;
}