2014-09-19 1 views
0

spring-batch을 사용하여 데이터베이스에서 일부 데이터를 가져옵니다. SELECT * FROM...을 사용하면 결과 집합에 @Entity 클래스 목록이 필요합니다.데이터베이스 테이블에서 엔티티를 자동으로 만드는 방법은 무엇입니까?

하지만 단지 개체의 일부 속성 (열) 가져 오려는 :

@Entity 
public class MyEntity { 
    private int id; 

    public MyEntity(String a, BigDecimal c, Date d) { 
     //setter 
    } 
} 

결과 :

SELECT DISTINCT ON (a, b) a, c, d 
FROM mytable [...] 

그러므로 내가 생성자를 만들어 그에 따라 그 가져온 열을 일치

org.hibernate.engine.jdbc.spi.SqlExceptionHelper 
PSQLException: The column id was not found in ResultSet 

이것은 내 독자 정의입니다.

JpaPagingItemReader<MyEntity> reader = new JpaPagingItemReader<MyEntity>(); 
JpaNativeQueryProvider<MyEntity> queryProvider = new JpaNativeQueryProvider<>(); 
queryProvider.setSqlQuery(SQL); 
reader.setQueryProvider(queryProvider); 

전체 행 내용을 가져 오지 않으면 엔티티를 자동으로 만들 수 있습니까?

답변

0

당신은 새로운 키워드와 POJO 선언을 유의하시기 바랍니다

select new bar.foo.entity.custom.CustomEntity (u.id, u.username, u.firstName, u.surname, u.email) from UserAccount u order by u.username ASC 

으로 JPA 쿼리를 사용할 수 있습니다. 그것은 마술이 일어나는 곳입니다.

+0

무엇이'e. *'입니까? 그리고 어느 위치에 'DISTINCT ON'을 놓아야합니까? – membersound

+0

글쎄, 당신의 질문은 어떤 속성을 얻을 수 있도록 e. *가 없다는 것이 었습니다. RE는 별개로 DISTINCT (e.username)로 사용할 수 있습니다. – Desorder

+0

나는 의미 : 당신의 예제 쿼리에서'e'는 무엇을 의미합니까? 왜냐하면 그것은 어디에도 정의되어 있지 않기 때문입니다. 그리고'SELECT NEW bar..CustomEntity (..) DISTINCT ON (..) FROM ..'또는'DISTINCT ON ON (..) NEW bar..CustomEntity .) FROM ..'? – membersound

관련 문제