inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 데이터 JPA

JPA 엔티티 설정할 때 오라클 View는 어떤식으로 설정해야하나요???

3711

짤짤이

작성한 질문수 3

0

안녕하세요.

현재 JPA를 공부하고 있는 1인입니다.

다름아니라 오라클의 뷰를 레파지토리로 만들어서 쓰고 싶은데

에플리케이션프로파티 파일의

spring.jpa.hibernate.ddl-auto=validate

설정에서 오류를 내뿜더라구요.

해서 오라클에 등록되 있는 뷰의 쓰는법을 알고 싶습니다.

spring.jpa.hibernate.ddl-auto=validate설정 none으로 변경하고 돌리면 SQL쿼리는 문제가 없는데 

실제로 가져온 값을 보면

LIST내에서 첫번째 인덱스 값만 계속 출력하더라구요. (사이즈가 10개라면 10개다 첫번째 값과 동일한 내역 출력)

혹시 알수 있으면 첫번째 인덱스 값만 계속 출력하는 이유도 알고 싶습니다.

결론

1. 오라클 뷰 엔티티 작성하는 방법.

2. 쿼리로 가져온 List값이 첫번째 인덱스 값으로 계속 출력되는 이유

이상 잘 부탁드립니다.

spring java JPA

답변 2

0

짤짤이

List<ViewEntity> searchResultList = em.createNativeQuery(sb.toString(), ViewEntity.class)

.setParameter("ID", Id)

.getResultList();

for(ViewEntity entity : searchResultList) {

if(entity.getName()!=null) {

System.out.println("name    : " + entity.getName());

}

}

간단히 쓰자면 위와 같은 모습이 됩니다.

위와 같은 모습일 때 

List가 가지고 있는 값은 이러한 모습이며

첫번째를 제외한 나머지 엔티티는 

> 화살표가 없을때도 있고 

> 화살표가 있어도 값이 보이지 않는 상태가 됩니다.(마우스 드래그 하면 첫번째랑 똑같은 값이 들어있습니다.)

데이터값 출력보다는 값 받아오는 곳에서 무언가 설정을 잘못한듯 한데

여기서 받은 SQL을 돌리면 문제 없이 원하는 값을 받아옵니다.

또 받는 코드를 

List<Object> obj = em.createNativeQuery(sb.toString())

.setParameter("ID", Id)

.getResultList();

이러한 식으로 받게 되면 엔티티형태로 받는것은 아니나 리스트 안에는 제가 원하는 값이 들어 있습니다.

요약하자면

List를 받아올 때 쿼리는 실제로 돌려보면 문제가 없이 원하는 값을 받아옵니다.

<1> List<ViewEntity> searchResultList = em.createNativeQuery(sb.toString(), ViewEntity.class)

<1>와 같이 ViewEntity클래스를 지정하여 받아오라고 하면 List안의 값이 쿼리 돌렸을때 값과 일치하지 않으며

<2>List<Object> obj = em.createNativeQuery(sb.toString())

<2>와 같이 ViewEntity클래스를 지정하지 않고 받을 시 원하는 값이 나옵니다.

0

백기선

1. @Table이라는 애노테이션을 사용해서 View에 엔티티를 맵핑할 수 있습니다. 아래 링크에서 예제 확인해 보세요.

https://vladmihalcea.com/map-jpa-entity-to-view-or-sql-query-with-hibernate/

2. List 값이 첫번째 인덱스 값으로 출력된다고 하셨는데 List를 어떻게 출력하신건지 코드를 보여주실 수 있나요?

spring boot 2.7.13-SNAPSHOT trace 소문자 로그 안나옴

0

532

1

<스프링 데이터 Common: 기본 리포지토리 커스터마이징> 에 대한 질문

0

392

1

comment table에서 저장될떄 왜 id값이 2부터저장이되는건가요?

0

406

1

@EnableJpaRepositories 설정을 스프링부트가 어디에서 자동설정하나요?

0

450

0

PersistenceContext 관련 질문드립니다.

0

334

1

지금(Eager), 나중에(Lazy)의 의미를 모르겠습니다

0

338

1

transaction 구간이 길어질 경우의 처리방법 문의드립니다.

0

905

1

docker postgres

0

291

1

Multiple DataSource 사용 시 transaction 관련 질문 드립니다.

0

2907

1

entity 중 null이 아닌 필드만 update 할 방법이 있을까요?

0

1190

1

Eager 모드일 경우, join을 inner join으로 바꾸는 법이 있을까요?

0

385

1

엔티티를 상속받는 DTO가 일반적인가요?

1

1847

1

커스텀 타입 클래스를 String 타입 처럼 이용해 쿼리하는 방법에 대해 질문하고 싶습니다.

0

339

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

480

1

소스코드는 어디서 볼 수 있을까요?

1

286

1

table 생성과 select 문에 대한 질문

0

172

1

스프링 데이터 RepositoryTest 관련 질문

0

2170

2