커스텀 타입 클래스를 String 타입 처럼 이용해 쿼리하는 방법에 대해 질문하고 싶습니다.
339
작성한 질문수 1
안녕하세요 강사님.
강사님의 강의를 들으면서 처음으로 jpa와 querydsl을 이용하여 프로젝트를 진행하는 중 막히는 부분이 있어 질문드립니다.
primitive type의 필드가 아닌, 커스텀 클래스를 타입으로 갖는 엔티티를 만들어 사용중에 있습니다.
@Entity
public class User{
private Email email;
private String name;
private String password;
}
위와 같은 엔티티가 있을 때, 사용자로부터 넘겨받은 문자열을 가지고
select * from user where email like '%input%' or name like '%input%';
과 같은 쿼리를 사용하려면 어떻게 해야할까요??
검색을 통해, QueryDSL의 @QueryType(PropertyType.STRING) 등 또한 사용해봤지만 원하는 기능을 구현해내지 못했습니다.
답변 1
1
안녕하세요.
지금 상태로는 원하시는 쿼리 중에 "email like '%input%'" 이 부분이 가능해 보이지 않네요. email은 말씀하신대로 Email이라는 커스텀 클래스의 인스턴스라서 문자열과 like 비교를 할 수 없을겁니다. 대신, Email 안에 실제 이메일 값을 가지고 있는 필드를 가지고 like 비교를 하는 쿼리를 만든다면 가능할 것 같습니다.
제가 보기엔 맵핑부터 다시 해봐야 할것 같습니다. Email이라는 타입이 User 테이블에 어떤 식으로 저장이 되길 바라시는건가요? email 값만 저장되도 된다면 JPA Custom type mapping이라는 키워드로 검색해서 커스텀 타입을 하나의 컬럼으로 맵핑하는 방법부터 학습해야 합니다. 그럼 Email을 email이라는 varchar 타입의 컬럼으로 맵핑하는 방법을 알아낼 수 있으실테고, 그 이후에는 원하시는 쿼리를 만드실 수 있을 겁니다.
감사합니다.
spring boot 2.7.13-SNAPSHOT trace 소문자 로그 안나옴
0
533
1
<스프링 데이터 Common: 기본 리포지토리 커스터마이징> 에 대한 질문
0
392
1
comment table에서 저장될떄 왜 id값이 2부터저장이되는건가요?
0
407
1
@EnableJpaRepositories 설정을 스프링부트가 어디에서 자동설정하나요?
0
450
0
PersistenceContext 관련 질문드립니다.
0
335
1
지금(Eager), 나중에(Lazy)의 의미를 모르겠습니다
0
338
1
transaction 구간이 길어질 경우의 처리방법 문의드립니다.
0
905
1
docker postgres
0
293
1
Multiple DataSource 사용 시 transaction 관련 질문 드립니다.
0
2908
1
entity 중 null이 아닌 필드만 update 할 방법이 있을까요?
0
1190
1
Eager 모드일 경우, join을 inner join으로 바꾸는 법이 있을까요?
0
385
1
엔티티를 상속받는 DTO가 일반적인가요?
1
1847
1
연관관계 매핑 어떤식으로 해야될지 감이 안잡힙니다.
0
566
4
EntityManager 주입시 Annotation관련 질문드립니다.
0
565
1
클래스 기반 프로젝션 사용 관련 질문
0
560
1
save 메서드 질문드립니다.
0
258
1
복잡한 통계쿼리도 JPA로 가능한가요?
2
5592
1
find 와 get의 차이가 무엇인가요?
0
890
1
실무에서 JPA 할 때 FK로 개발할때 연관관계를 꼭 맺어주어야 하나요?
0
998
1
\dt Did not find any relations.
0
481
1
소스코드는 어디서 볼 수 있을까요?
1
287
1
table 생성과 select 문에 대한 질문
0
174
1
스프링 데이터 RepositoryTest 관련 질문
0
2173
2
NoRepositoryBean 과 추상클래스
0
446
1





