요약
@Where 애노테이션에 한가지 조건이 아닌 여러 조건을 default 쿼리로 날 릴 수 있다.
String이니 휴먼 에러에 유의 해야 한다.
상황
소프트 딜리트를 담고 있는 객체에 항상 조회할 때마다 deleted=false인 채로 쿼리를 날려야만 했다.
추가적으로 소프트 딜리트 외 다른 기본 조건도 추가해야할 일이 생겼다.
@Where 애노테이션에 deleted=false인 구문을 String을 받고 있었다. 과연 문자열을 그대로 쿼리로 나갈 것인지 궁금했다.

해결
단순 문자열이니 AND 구문을 추가하면 다중 조건도 가능하다.
말 그대로 String이라 어떤 조건을 추가하면 쿼리 문 같이 AND ,OR 등으로 하면 될 것 이다.
packagecom.platform.order.product.domain.entity; importjavax.persistence.Entity; importjavax.persistence.FetchType; importjavax.persistence.ManyToOne; importjavax.persistence.OneToOne; importjavax.persistence.Table; importorg.hibernate.annotations.Where; importcom.platform.order.common.BaseEntity; importlombok.AllArgsConstructor; importlombok.Builder; importlombok.Getter; importlombok.NoArgsConstructor; @Getter @Builder @NoArgsConstructor @AllArgsConstructor @Where(clause = "deleted=false AND is_display=true") // AND 추가 @Table(name = "product") @Entity publicclassProductEntityextendsBaseEntity { privateString name; privateLong quantity; privateLong price; privatebooleanisDisplay; @ManyToOne(fetch = FetchType.LAZY) privateCategoryEntity category; @OneToOne(fetch = FetchType.LAZY) privateProductThumbnailEntity productThumbnail; }