Hi I'm currently using Query method to get my result. the design of my app is as below.
Member Entity
@Entity
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Getter
@ToString
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long mno;
private String name;
private String phone;
}
MemberImage Entity
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Getter
@ToString(exclude="member")
public class MemberImage {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long inum;
private String uuid;
private String imgName;
private String path;
@ManyToOne(fetch=FetchType.LAZY)
private Member member;
}
and the query method that I'm using
MemberRepository.java
@Query("select m, mi, count(mi) from Member m"+ " left outer join MemberImage mi on mi.member=m group by m")
Page<Object[]> getListPage(Pageable pageable);
PageRequestDTO.java
@Builder
@AllArgsConstructor
@Data
public class PageRequestDTO {
private int page;
private int size;
private String type;
private String keyword;
public PageRequestDTO(){
this.page = 1;
this.size = 10;
}
public Pageable getPageable(Sort sort){
return PageRequest.of(page -1, size, sort);
}
}
I'm trying to make a search operation with Booleanbuilder like below
private BooleanBuilder getSearch(PageRequestDTO requestDTO){
String type = requestDTO.getType();
BooleanBuilder booleanBuilder = new BooleanBuilder();
String keyword = requestDTO.getKeyword();
BooleanExpression expression = qMember.mno.gt(0L);
booleanBuilder.and(expression);
if(type == null || type.trim().length() == 0){
return booleanBuilder;
}
BooleanBuilder conditionBuilder = new BooleanBuilder();
if(type.contains("n")){
conditionBuilder.or(qMember.name.contains(keyword));
}
if(type.contains("p")){
conditionBuilder.or(qMember.phone.contains(keyword));
}
booleanBuilder.and(conditionBuilder);
return booleanBuilder;
}
I want the results with Page<Object[]> with the terms of booleanBuilder that I coded. Is there any way to get this result? I tried memberRepository.getListPage(booleanBuilder,pageable) and see if I can get the right results, but it didn't. Any suggestions?