【发布时间】:2017-01-10 15:09:37
【问题描述】:
我目前正在使用 Spring 和 HANA DB 开展一个项目。
我已经有一个正常工作的 Web 服务,但我需要从我的 HANA 数据库中选择一个视图(在 Spring Web 服务之外创建)。
我的视图由 2 个表组成,其中 4 个字段是其中一个表中一列的总和(计算每 4 个可能值中每个值的多少,并将其显示为 4 个字段中的每个字段中的数字) .
我在一些 Spring JPA 帖子中读到它应该可以通过简单的选择正常工作,我的问题是:
我通常会这样选择:
TypedQuery<name_of_the_model_class> query = em.createQuery("SELECT c FROM NameOfTheTable ORDER BY c.some_field DESC WHERE c.name =?1 ", name_of_the_model_class.class);
query.setParameter(1, name_to_search);
然后我只是将列表返回给控制器,控制器会以 JSON 格式显示。
问题是,我在 Eclipse 中创建了这个视图,直接使用 HANA DB 中的 SQL 代码,而不是在 Web 服务中创建它。
我想知道,有没有办法像我上面展示的那样选择,在没有模型类的情况下返回它? 它只需要一个具有完全相同字段的类,比如模型类但没有@Entity注解?
或者 有没有办法在 Spring JPA 中创建类似于模型类的视图?如果有办法,让它起作用的注释是什么?
Spring JPA 不会接受我在没有课程的情况下返回它吗?
我阅读了很多帖子但没有找到,即使在手册中也没有给出明确的说明或示例。
非常感谢您抽出宝贵时间,如果我没有解释清楚,请告诉我,我真的很困惑。
更多信息(我最近的尝试): 我在 DAO 的整个搜索功能:
public List<IncidentStatusResultsUser> getIncidentStatusByUser(String userID) throws ParseException {
List<IncidentStatusResultsUser> resultList = em.createQuery("SELECT c FROM USERSTATUS ORDER BY c.uploadDateTime DESC WHERE c.userID=?1 ").setMaxResults(48).getResultList();
Collections.reverse(resultList);
return resultList;
}
我创建了一个类来接收具有相同视图字段的数据:
public class IncidentStatusResultsUser {
private Date uploadDateTime ;
private int status1;
private int status2;
private int status3;
private int status4;
//All gets and sets ommited
public IncidentStatusResultsUser (Date uploadDateTime, long status1, long status2, long status3, long status4) {
this.uploadDateTime = uploadDateTime;
this.status1= status1;
this.status2= status2;
this.status3= status3;
this.status4= status4;
}
}
EDIT-2:在类中添加了公共构造函数。
最好的问候, 法米比卡
【问题讨论】:
-
您可以直接将视图映射到 spring jpa 存储库。如果你真的想要,你可以写一个 viewrepository - 但它没有必要
标签: java spring jpa sql-view hana