我正在使用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 :(得分: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 声明。这就是魔术发生的地方。