2014-09-19 3 views
0

Я использую spring-batch для получения некоторых данных из базы данных. Если я использую SELECT * FROM... мой список результатов - @Entity классов.Как автоматически создать сущность из таблиц базы данных?

Но я только хочу, чтобы загрузить некоторые атрибуты (столбцы) объекта:

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

Поэтому я создал конструктор соответственно, что соответствует столбцы неправдоподобные:

@Entity 
public class MyEntity { 
    private int id; 

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

Результат:

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

Вы можете использовать JPA запросы в

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 

Обратите внимание нового ключевого слова и Pojo декларации. Именно там происходит волшебство.

+0

Что такое 'e. *' Здесь? И на каком месте я должен поставить 'DISTINCT ON'? – membersound

+0

ну, ваш вопрос в том, как получить некоторые атрибуты, чтобы не было e. *. RE, отличный, вы можете использовать как DISTINCT (e.username). – Desorder

+0

Я имел в виду: что означает 'e' в вашем примере запроса? Потому что он нигде не определен ... И должен ли я писать 'SELECT NEW bar..CustomEntity (..) DISTINCT ON (..) FROM ..' или' SELECT DISTINCT ON (..) NEW bar..CustomEntity (. .) FROM ..'? – membersound

Смежные вопросы