问题描述
@Query("select p.name,p.contact_no,p.email_address,p.time_submitted,p.date_due from Application p where p.application_number like ?1")
List<Application> getApplicationSummaryInfo(String application_number);
服务:
public List<Application> getApplicationSummaryInfo(String application_number);
ServiceImpl:
@Override
public List<Application> getApplicationSummaryInfo(String application_number) {
return (List<Application>)applicationRepository.getApplicationSummaryInfo(application_number);
}
控制器:
List<Application> app_info = applicationservice.getApplicationSummaryInfo(application_no);
我只知道如何使用foreach在jsp文件中访问此文件。但是我想访问我的控制器文件中的字段。
我尝试这样做:
List<Application> app_info = applicationservice.getApplicationSummaryInfo(application_no);
System.out.println(app_info.get(0));
我得到这个结果:
[Ljava.lang.Object;@28bf8e6e
List<Application> app_info = applicationservice.getApplicationSummaryInfo(application_no);
System.out.println(app_info.get(0).getName());
但是我得到这个错误
java.lang.classCastException: class [Ljava.lang.Object; cannot be cast to class com.pckg_name.model.Application ([Ljava.lang.Object; is in module java.base of loader 'bootstrap'; com.rtc_insurance.model.Application is in unnamed module of loader 'app')
真的希望你能帮助我。谢谢!
解决方法
可能会帮助您。
- 使用sql中提到的字段创建一个构造函数。 (名称,联系方式,电子邮件地址,提交的时间,到期日期)。
- 在查询中进行指定,例如“从应用程序p中选择新的应用程序(名称,联系人编号,电子邮件地址,提交的时间,日期_到期),其中p.application_number像?1”。
- 您将以Application对象的形式获取结果,以便您可以访问该对象的字段。
由于Application
是实体,而不是:
@Query("select p.name,p.contact_no,p.email_address,p.time_submitted,p.date_due from Application p where p.application_number like ?1")
spring-data-jpa
已经为您提供了一种方法:
List<Application> findByApplication_numberContaining(String str);
因此,无需自己创建查询。只需在repository
界面中定义上述方法即可。
在那之后,首先请确保您的存储库方法能够按需工作。 然后,如果要遍历JSP页面内的列表,请使用此answer 是给你的。
让我知道它是否解决了问题。